почему этот фрагмент кода (итератор) не выполняется должным образом до конца

#python #iterator

#python #итератор

Вопрос:

Я пытаюсь создать итератор, используя его собственные функции iter() и next(). Но код, который я написал, не выполняется до конца. он считывает только первый символ. что плохого я сделал в коде.

 def itera(x):

    while True:
        it = iter(x)
        return (next(it))

print(itera([1,2,3,4,5]))
  

Комментарии:

1. @khelwood Но цикл в любом случае выполняется только один раз, поскольку есть return оператор

2. @Rightleg Это тоже верно.

Ответ №1:

Потому что вы повторно создаете итератор с it = iter(x) . Поместите его за пределы цикла. Даже в этом случае он не будет работать так, как вы ожидаете, из-за оператора return, который останавливает выполнение после первого элемента. Скорее вам нужны генераторы:

 def itera(x):
    it = iter(x)
    while True:
        yield (next(it))

print(list(itera([1,2,3,4,5])))