There's a utility function called find_transaction_objects (that will be added to the main API soon) that may be useful here.
It does the same thing as find_transactions, except it then converts the trytes that the IRI sends back into proper iota.transaction.base.Transaction objects.
Once you have Transaction objects, you can access each one's signature_message_fragment (which is an iota.types.TryteString object) and decode it:
from iota.commands.extended.utils import find_transaction_objects
transactions = find_transaction_objects(addresses=list_add)
for transaction in transactions:
# Ignore input transactions; these have cryptographic signatures,
# not human-readable messages.
if transaction.value < 0:
continue
print(f'Message from {transaction.hash}:')
message = transaction.signature_message_fragment
if message is None:
print('(None)')
else:
print(message.decode())
TransactionTrytesobjects (or use substring parsing) to get the messages out. – mihi Mar 19 '18 at 20:17