Sobes.tech
Middle

Какви са итераторите и генераторите в Python и каква е разликата между тях?

sobes.tech AI

Отговор от AI

Итератор в Python е обект, който реализира методите __iter__() и __next__(). Той позволява последователно обхождане на елементите на колекция без необходимостта да зареждате всички данни веднага в паметта.

Генераторът е специален вид итератор, който се създава с помощта на функции с ключовата дума yield или генераторни изрази. Генераторите лениво изчисляват стойностите при необходимост, което спестява памет и позволява работа с потенциално безкрайни последователности.

Основни разлики:

  • Итераторът е общ интерфейс за последователно обхождане на елементите.
  • Генераторът е удобен начин за създаване на итератори с помощта на yield.

Пример за генератор:

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

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

Тук count_up_to е генератор, който връща числата от 1 до n, по едно за всяко.