Il 18 febbraio 2011 17:43, Daniele Varrazzo <p...@develer.com> ha scritto: > On Fri, 18 Feb 2011 16:59:32 +0100, Gianluca Bargelli > <g.barge...@gmail.com> wrote: >> Ok, ho visto il mio errore di prima (l'inutile len(str(item)), ecco >> una versione pulita: >> >> for item in ['ciao!', 1, ['mela', 'pera', 'banana'], [1, 2, 3]]: >> ... try: >> ... print len(item) >> ... except TypeError: >> ... print 0 #L'elemento non ha lunghezza >> ... >> >> Una soluzione migliore sarebbe controllare se l'oggetto è iterabile, >> vedi [1] e [2]. > > > [1]: > http://stackoverflow.com/questions/1952464/in-python-how-do-i-determine-if-a-variable-is-iterable > [2]: > http://stackoverflow.com/questions/2824612/handle-iterable-and-non-iterable-seamlessly > > Avere una lunghezza ed essere iterabile non sono la stessa cosa. Alcuni > oggetti sono iterabili ma non hanno lunghezza (es. i generatori). Se vuoi > fare senza il try/except dovresti controllare l'esistenza di __len__, non > di __iter__. >
Hai ragione, la documentazione su len() parla solo di sequenze e mapping [1], non di iterabili: non so come mai nella mia testaccia bacata ho fatto l'associazione "sequenza = iterabile". Mea Culpa! [1]: http://docs.python.org/library/functions.html#len -- -Gianluca http://proudlygeek.appspot.com _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python