首页 > 解决方案 > Python 生成器和 yield - 在 while 循环中递增到 next() 调用

问题描述

在下面的代码片段中,您将如何使用运算符而不是键入四次来增加next()调用?在循环中,只有第一个实例会重复打印。每次迭代如何推进到下一个?+=print(next(seq))whileprint(next(seq))

def get_sequence_upto(x):
    for i in range(x):
        yield i 

seq = get_sequence_upto(5)

print(next(seq))

print(next(seq))

print(next(seq))

print(next(seq))

输出:

0
1
2
3

编辑:添加了 while 循环片段

while True:
seq = loop_here(x)

        print(next(seq))

我尝试将 += 添加到代码中的不同点,但没有成功。

标签: pythonpython-3.xwhile-loopgeneratoryield

解决方案


您可以使用如下的 for 循环:

def get_sequence_upto(x):
    for i in range(x):
        yield i 

seq = get_sequence_upto(5)
while seq:
    try:
        print(next(seq))
    except:
        break

推荐阅读