为什么这段代码(迭代器)在结束之前没有正确迭代

问题描述 投票:0回答:1

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

def itera(x):

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

print(itera([1,2,3,4,5]))
python iterator
1个回答
1
投票

因为你用it = iter(x)重新创建迭代器。把它放在循环之外。即便如此,由于return语句会在第一个元素之后停止执行,因此它不会按预期的方式工作。相反,你需要发电机:

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

print(list(itera([1,2,3,4,5])))
© www.soinside.com 2019 - 2024. All rights reserved.