Sobes.tech
Middle

Čo sú iterátory a generátory v Pythone a v čom je ich rozdiel?

sobes.tech AI

Odpoveď od AI

Iterátor v Pythone je objekt, ktorý implementuje metódy __iter__() a __next__(). Umožňuje sekvenčné prechádzanie prvkov kolekcie bez nutnosti načítať všetky dáta naraz do pamäte.

Generátor je špeciálny typ iterátora, ktorý sa vytvára pomocou funkcií s kľúčovým slovom yield alebo generátorových výrazov. Generátory lenivo počítajú hodnoty podľa potreby, čo šetrí pamäť a umožňuje pracovať s potenciálne nekonečnými sekvenciami.

Hlavné rozdiely:

  • Iterátor je všeobecné rozhranie pre sekvenčné prechádzanie prvkov.
  • Generátor je pohodlný spôsob, ako vytvárať iterátory pomocou yield.

Príklad generátora:

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

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

Tu je count_up_to generátor, ktorý vracia čísla od 1 do n, jedno po druhom.