我正在使用 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)
最佳答案
在这种情况下,您似乎误用了 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)
正如预期的那样。
关于python - 为什么我的生成器总是返回相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31708002/