Concetti Chiave
- La list comprehension in Python consente di creare liste utilizzando una sintassi compatta e leggibile, simile a un ciclo for.
- Le comprehension possono essere applicate anche ai dizionari, ma non esistono comprehension specifiche per le tuple.
- Le espressioni che sembrano comprehension di tuple generano in realtà generatori, che producono elementi su richiesta.
- La funzione yield in una definizione di funzione trasforma la funzione in un generatore, restituendo valori uno per volta.
- I parametri di default in Python devono seguire i parametri posizionali all'interno della definizione di una funzione.
Python - List comprehension
La comprehension (comprensione) è quell'operazione concettuale che permette di passare da una proprietà alla sua estensione
[espressione for nome in sequenza serie di for e/o if ]
Equivalente a
Res=[]
For nome in sequenza :
serie di for e/o if
res.append(espressione)
Return res
Espressione può essere molte cose e può includere altre comprehension
Sui dizionari {chiave:val for nomi in sequenza}
Non c’è comprehension sulle tuple
Tuttavia espresssioni che sembrano "comprehension di tuple" sono legali, ma non danno tuple, bensì generatori
G=(i for i in range(3))
Un generatore è una sorta di "tupla in potenza" che genera uno dopo l'altro gli elementi della tupla, per mezzo della funzione predefinita next()
Next(g) : stampa 0
Next(g) : stampa 1
Next(g) : stampa 2
Next(g) : non stampa più nulla, il generatore g è esaurito
Tale notazione può essere usata anche all’interno di funzioni che si aspettano sequenze o iteratori, per esempio se voglio calcolare
>>> sum( i f o r i i n r ang e (21) i f i % 6 != 0)
154
Comando yield
Il comando yield deve comparire all'interno di una def di funzione.
Yield espressione
Restituisce il valore di espressione al chiamante e sospende la valutazione della funzione
Parametri
- parametri posizionali (nome)
- parametri default (nome=espressione)
Se ci sono argomenti opzionali, i parametri di default devono seguire quelli ordinari