#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])))