代码之家  ›  专栏  ›  技术社区  ›  foosion

Python:for循环中的下一个

  •  5
  • foosion  · 技术社区  · 5 年前

    我想用 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 回复  |  直到 5 年前
        1
  •  9
  •   khelwood Muhammed Elsayed.radwan    5 年前

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

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

    def gen():
        for i in range(10):
            yield i
    
    x = gen()
    for g in x:
        n = next(x)
        print(g, n)