Python: 下一个循环

共1个回答,已解决, 标签: python generator next

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

等。

我做错什么了?

第1个答案(采用)

你每次打电话都在做一个新的发电机 gen() 。每个新的生成器从 0 开始。

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

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

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

相关问题

通过随机抽样其他列数据创建新列 如何使用熊猫获得包括每一个组合的计数 如何有效地展开矩阵的值与小块? 共享巨蟒生成器 大多数 pythonic 可调用生成 True? Python: 下一个循环