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