Python:下一个for循环

时间:2019-04-06 22:08:54

标签: python generator next

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

我在做什么错了?

1 个答案:

答案 0 :(得分:9)

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

相反,您只能调用一次并捕获返回值。

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

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