Python: for 循环中的下一个

Python: next in for loop

我想使用 next 跳过从生成器返回的一个或多个项目。这是一个简化的示例,旨在每个循环跳过一个项目(在实际使用中,我会测试 n 并根据结果,可能会重复 next() 并且生成器来自我不知道的包t 控制):

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开始。

相反,您可以调用它一次并捕获 return 值。

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

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