Video appunto: List comprehension

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.
La presenza di yield fa sì che la def definisca un generatore
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