Python:for循环中的next

9
我想使用 next 跳过生成器返回的一个或多个项目。这是一个简化的示例,旨在每次循环跳过一个项目(在实际使用中,我会测试n,根据结果可能重复执行next(),并且生成器来自我无法控制的包)。
def gen():
for i in range(10):
    yield i

for g in gen():
   n = next(gen())
   print(g, n)

我预期的结果是

0 1
2 3

等等。

但我得到了

0 0
1 0

等等,我做错了什么吗?

1个回答

9

每次调用gen()都会创建一个新的生成器,每个新的生成器都从0开始。

相反,您可以调用一次并捕获返回值。

def gen():
    for i in range(10):
        yield i

x = gen()
for g in x:
    n = next(x)
    print(g, n)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接