Menu
Coddy logo textTech

Espressioni generatrici

Lezione 9 di 13 del corso Iteratori in Python di Coddy.

Le espressioni generatore sono un modo conciso per creare iteratori in Python. Offrono un’alternativa più efficiente in termini di memoria rispetto alle list comprehension, soprattutto quando si lavora con grandi insiemi di dati o sequenze infinite.

Sintassi delle espressioni generatore

Le espressioni generatore usano una sintassi simile a quella delle list comprehension, ma con parentesi tonde anziché quadre:

(expression for item in iterable if condition)

Caratteristiche principali

  • Valutazione lazy: le espressioni generatore producono gli elementi uno alla volta e solo quando vengono richiesti, risparmiando memoria.
  • Iteratori monouso: una volta esauriti, non possono essere riutilizzati senza ricreare il generatore.
  • Sintassi concisa: offrono un modo compatto per definire semplici funzioni generatore.

Esempio d’uso

Ecco un semplice esempio di espressione generatore che produce i quadrati dei numeri:

squares = (x**2 for x in range(5))
for square in squares:
    print(square)  # Outputs: 0, 1, 4, 9, 16

Confronto con le list comprehension

Sebbene la sintassi sia simile, le espressioni generatore differiscono dalle list comprehension per l’uso della memoria:

# Comprensión de listas (crea una lista completa en memoria)
squares_list = [x**2 for x in range(1000000)]

# Expresión generadora (crea un objeto generador)
squares_gen = (x**2 for x in range(1000000))

L’espressione generatore è più efficiente in termini di memoria, perché non crea tutti i valori in una volta sola.

Casi d’uso

Le espressioni generatore sono particolarmente utili quando:

  • Si lavora con grandi insiemi di dati
  • Si elaborano flussi di dati
  • Si creano pipeline di dati

Usando le espressioni generatore, puoi creare iteratori efficienti e a basso consumo di memoria per diverse attività di elaborazione dei dati in Python.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

challenge icon

Sfida

Facile

Crea un’espressione generatrice che filtri e trasformi una sequenza di numeri. Il generatore dovrebbe produrre i quadrati dei numeri pari in un intervallo specificato.

Ti vengono forniti:

  • Due interi come input: start e end (inclusi)

Il tuo compito è:

  1. Creare un’espressione generatrice che:
    • Iteri nell’intervallo da start a end (inclusi)
    • Escluda i numeri dispari
    • Calcoli il quadrato dei numeri pari rimanenti
  2. Usare l’espressione generatrice in un ciclo per stampare ogni valore risultante su una nuova riga

L’input sarà fornito come due interi separati da uno spazio, che rappresentano start e end.

Provalo tu

# Leggi l'input
start, end = map(int, input().split())

# TODO: Crea qui la tua espressione generatrice
generator_exp = None  # Sostituisci None con la tua espressione generatrice

# Stampa i risultati
for value in generator_exp:
    print(value)

Tutte le lezioni di Iteratori in Python

Esercitati da solo: Compilatore Python online