Sobes.tech
Middle

Co jsou iterátory a generátory v Pythonu a v čem je jejich rozdíl?

sobes.tech AI

Odpověď od AI

Iterátor v Pythonu je objekt, který implementuje metody __iter__() a __next__(). Umožňuje sekvenční procházení prvků kolekce bez nutnosti načíst všechna data najednou do paměti.

Generátor je speciální typ iterátoru, který se vytváří pomocí funkcí s klíčovým slovem yield nebo generátorových výrazů. Generátory lenivě počítají hodnoty podle potřeby, což šetří paměť a umožňuje pracovat s potenciálně nekonečnými sekvencemi.

Hlavní rozdíly:

  • Iterátor je obecné rozhraní pro sekvenční průchod prvky.
  • Generátor je pohodlný způsob, jak vytvářet iterátory pomocí yield.

Příklad generátoru:

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

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

Zde je count_up_to generátor, který vrací čísla od 1 do n, jedno po druhém.