[Python] Lughezza singolo elemento di una lista annidata
Daniele Varrazzo
piro a develer.com
Ven 18 Feb 2011 17:43:30 CET
On Fri, 18 Feb 2011 16:59:32 +0100, Gianluca Bargelli
<g.bargelli a 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__.
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
Maggiori informazioni sulla lista
Python