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.