vale1411
Genius
1 min. di lettura
Vota

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.

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

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community