Sobes.tech
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.