为什么我的生成器总是 returns 相同的值?
Why my generator always returns the same value?
我正在使用 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)
符合预期。
我正在使用 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)
符合预期。