【问题标题】:Why my generator always returns the same value?为什么我的生成器总是返回相同的值?
【发布时间】:2015-07-29 18:08:12
【问题描述】:

我正在用python3实现生成器的例子,这在使用next()时不起作用:

def rgb():
    for r in range(256):
        for g in range(256):
            for b in range(256):
                yield r, g, b

for x in range(5):
    print(next(rgb()))

输出:

(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)
(0, 0, 0)

现在,如果我使用 for 作品:

def rgb():
    for r in range(256):
        for g in range(256):
            for b in range(256):
                yield r, g, b

for x in rgb():
    print(x)

【问题讨论】:

    标签: python generator python-3.4


    【解决方案1】:

    在这种情况下,您似乎误解了 next() 函数,您每次都创建 rgb() 函数的新实例。试试这个:

    def rgb():
        for r in range(256):
            for g in range(256):
                for b in range(256):
                    yield r, g, b
    
    it = rgb()
    for x in range(5):
        print(next(it))
    

    打印出来

    (0, 0, 0)
    (0, 0, 1)
    (0, 0, 2)
    (0, 0, 3)
    (0, 0, 4)
    

    正如预期的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-06
      • 2013-04-23
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2014-05-18
      • 2018-09-24
      • 1970-01-01
      相关资源
      最近更新 更多