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.