Middle
Czym są iteratory i generatory w Pythonie i jaka jest między nimi różnica?
sobes.tech AI
Odpowiedź od AI
Iterator w Pythonie to obiekt, który implementuje metody __iter__() i __next__(). Umożliwia on sekwencyjne przechodzenie przez elementy kolekcji bez konieczności ładowania wszystkich danych do pamięci od razu.
Generator to specjalny rodzaj iteratora, tworzony za pomocą funkcji z użyciem słowa kluczowego yield lub wyrażeń generatorowych. Generatory leniwie obliczają wartości w razie potrzeby, co oszczędza pamięć i pozwala na pracę z potencjalnie nieskończonymi sekwencjami.
Główne różnice:
- Iterator to ogólny interfejs do sekwencyjnego przechodzenia przez elementy.
- Generator to wygodny sposób tworzenia iteratorów za pomocą
yield.
Przykład generatora:
def count_up_to(n):
count = 1
while count <= n:
yield count
count += 1
for number in count_up_to(5):
print(number)
Tutaj count_up_to to generator, który zwraca liczby od 1 do n po jednym na raz.