Nel titolo non mi sto riferendo alla comprensione di UNA lista, ma a quello che viene definito in inglese list comprehension cioè la possibilità di creare una lista basandosi su altre liste. Come sempre un paio di esempi chiariranno molto meglio il concetto:
1. lista = [1, 5 , 7, 8]Come facilmente si capisce result non è altro che il risultato della manipolazione della lista originale, chiamata con molta fantasia lista, alla quale viene applicata una semplice moltiplicazione *5 di ogni oggetto presente in lista.
2. result = [i*5 for i in lista]
3. print result
output: [5, 25, 35, 40]
Ovviamente potrei mettere altra carne al fuoco e moltiplicare *5 solo i valori superiori a 5 della nostra lista. Ancora una volta è un'operazione semplicissima:
1. lista = [1, 5 , 7, 8]Come si vede ora solo i valori 7 e 8 sono stati moltiplicati *5, facile ed efficace.
2. result = [i*5 for i in lista if i>5]
3. print result
output: [35, 40]
Prima ho definito come la list comprehension la possibilità di creare una lista basandosi su altre liste, ma anche una stringa può essere presa in considerazione come punto di partenza.
1. word = "parola"Semplice, elegante e soprattutto molto utile.
2. result = [lettera for lettera in word]
3. print result
output: ['p', 'a', 'r', 'o', 'l', 'a']