16 aprile 2013

Comprensione di lista



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]
2. result = [i*5 for i in lista]
3. print result


output: [5, 25, 35, 40]
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.

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]
2. result = [i*5 for i in lista if i>5]
3. print result


output: [35, 40]
Come si vede ora solo i valori 7 e 8 sono stati moltiplicati *5, facile ed efficace.

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"
2. result = [lettera for lettera in word]
3. print result


output: ['p', 'a', 'r', 'o', 'l', 'a']
Semplice, elegante e soprattutto molto utile.

Tondo è bello...

Tondo è bello...