我正在使用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)
答案 0 :(得分:3)
在这种情况下,您似乎误导了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)
正如所料。