List comprehension
La list comprehension è una inizializzatore di righe particolare, e in pratica crea una lista con una struttura di controllo nella lista stessa.
[<espressione> for <id> in <iterabile> if <condizione>]
Questa struttura ha quindi bisogno di un iterabile in input per generare la lista.
[l.strip() for l in open("addresses.log") if l.find("unimore.it") != -1]
# Che sarebbe la stessa cosa di
f = open("addresses.log")
A = set()
for line in f:
if line.find("unimore.it") != -1:
A.add(line.strip())
f.close()
ASe invece si volesse creare un dizionare, basta sostituire le parentesi:
{<espressione> for <id> in <iterabile> if <condizione>}
La tupla, invece, non si può creare in questo modo, essendo un oggetto non mutabile. Questa struttura genera crea una lista iniziale vuota, e man mano che trova un elemento che soddisfa i requisiti lo inserisce, cosa che con una tupla non si può fare.
Se si utilizzano le parentesi (), viene restituito un generatore.