为什么这段代码(迭代器)直到结束都没有正确迭代

时间:2019-04-24 09:02:56

标签: python iterator

我正在尝试使用其本机函数iter()和next()构建一个迭代器。但是我编写的代码直到结束都没有迭代。它只读取第一个字符。我对代码做了什么错误。

def itera(x):

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

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

1 个答案:

答案 0 :(得分:1)

因为您使用it = iter(x)重新创建了迭代器。将其放在循环之外。即使这样,由于return语句仍无法按预期方式运行,因为return语句会在第一个元素之后停止执行。而是需要生成器:

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

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