【问题标题】:Python: next in for loopPython:for循环中的下一个
【发布时间】:2019-08-28 10:47:06
【问题描述】:

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

等等

我做错了什么?

【问题讨论】:

    标签: python generator next


    【解决方案1】:

    每次调用gen() 时,您都会创建一个新的生成器。每个新生成器都从 0 开始。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多