Python Language Espressioni del generatore

Esempio

È possibile creare iteratori di generatore utilizzando una sintassi simile alla comprensione.

generator = (i * 2 for i in range(3))

next(generator)  # 0
next(generator)  # 2
next(generator)  # 4
next(generator)  # raises StopIteration

Se non è necessario che una funzione passi una lista, è possibile salvare sui caratteri (e migliorare la leggibilità) inserendo un'espressione di generatore all'interno di una chiamata di funzione. La parentesi della chiamata di funzione rende implicitamente la tua espressione un'espressione di generatore.

sum(i ** 2 for i in range(4))  # 0^2 + 1^2 + 2^2 + 3^2 = 0 + 1 + 4 + 9 = 14

Inoltre, si risparmia sulla memoria perché invece di caricare l'intero elenco su cui si sta iterando ( [0, 1, 2, 3] nell'esempio precedente), il generatore consente a Python di utilizzare i valori secondo necessità.