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ą.