Il giorno 18/feb/2011, alle ore 11.59, Robertino Ceccherini ha scritto: > > Ciao a tutti, > > sono un principiante di Python e vorrei chiedere una piccola domanda a che ne > sa piu' di me... > > sto facendo un esercizio sulle liste annidate, > ecco il codice : > > # Definizione funzione LunghezzaLista. > def LunghezzaLista(): > Lista = ['ciao!', 1, ['mela', 'pera', 'banana'], [1, 2, 3]] > i = 0 > while i < len(Lista): > print len(Lista[i]) > i = i + 1 > > La funzione dovrebbe nel mio intento stampare la lunghezza > di ogni elemento della lista annidata > Mi da un errore sull'istruzione len(Lista[i]) > sicuramente non ho capito bene perche' len(lista) ritorna il > numero degli elementi mentre per la lunghezza di un elemento > singolo non ho capito bene la sintassi, > grazie in anticipo per la risposta,
A stretto rigore di termini "stampare la lunghezza di ogni elemento della lista annidata" dovrebbe escludere gli elementi della lista primaria che NON siano liste. Quindi la risposta potrebbe essere se simboleggiamo con '*' il fatto che l'elemento non ammetta lunghezza .: [ '*','*',[4,4,6],['*','*','*']] In tal caso potresti usare una semplicissima istruzione: [[len(k) if hasattr(k,'__len__') else '*' for k in m] if isinstance(m,list) else '*' for m in Lista] che risolve il tuo problema in modo elegante ed estremamente leggibile :D:D:D G P.S. Il che dimostra che a parte le risposte, anche le domande a volte possono essere soggette ad interpretazione. _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python