我想使用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
等
我在做什么错了?
答案 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)