Sobes.tech
Middle

Cosa sono gli iteratori e i generatori in Python e qual è la loro differenza?

sobes.tech AI

Risposta dell'AI

Un iteratore in Python è un oggetto che implementa i metodi __iter__() e __next__(). Permette di attraversare sequenzialmente gli elementi di una collezione senza dover caricare tutti i dati in memoria contemporaneamente.

Un generatore è un tipo speciale di iteratore creato tramite funzioni con la parola chiave yield o espressioni generatori. I generatori calcolano pigramente i valori secondo necessità, risparmiando memoria e consentendo di lavorare con sequenze potenzialmente infinite.

Differenze principali:

  • Un iteratore è un'interfaccia generale per attraversare gli elementi in sequenza.
  • Un generatore è un modo comodo per creare iteratori usando yield.

Esempio di generatore:

def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

for number in count_up_to(5):
    print(number)

Qui, count_up_to è un generatore che restituisce i numeri da 1 a n, uno alla volta.