Sobes.tech
Middle

Kas yra iteratoriai ir generatoriai Python ir kuo jie skiriasi?

sobes.tech AI

Atsakymas iš AI

„Python“ iteratoriaus yra objektas, kuris įgyvendina metodus __iter__() ir __next__(). Jis leidžia seka pereiti per kolekcijos elementus be būtinybės iš karto įkelti visus duomenis į atmintį.

Generatorius yra specialus iteratoriaus tipas, sukurtas naudojant funkcijas su raktiniu žodžiu yield arba generatoriaus išraiškas. Generatoriai tingiai apskaičiuoja reikšmes pagal poreikį, taupydami atmintį ir leidžia dirbti su potencialiai begalinėmis sekų eilėmis.

Pagrindiniai skirtumai:

  • Iteratoriaus yra bendras sąsajos būdas sekančiam elementų perėjimui.
  • Generatorius yra patogus būdas kurti iteratorius naudojant yield.

Generatoriaus pavyzdys:

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

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

Čia count_up_to yra generatorius, kuris grąžina skaičius nuo 1 iki n, po vieną.