我想使用 next
跳过从生成器返回的一个或多个项目。这是一个简化的示例,旨在每个循环跳过一个项目(在实际使用中,我会测试 n
并根据结果,可能会重复 next()
和生成器来 self 无法控制的包):
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/