我想使用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

等等。

我究竟做错了什么?

最佳答案

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

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

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

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

关于Python:下一个for循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55553886/

10-16 16:10