【发布时间】:2011-11-22 03:36:07
【问题描述】:
我有一个这样定义的生成器:
def gen():
r = [0]
yield r
r[0] = 1
yield r
r[0] = 2
yield r
它将产生三个列表,其中一个元素从 0 到 2:
>>> a = gen()
>>> next(a)
[0]
>>> next(a)
[1]
>>> next(a)
[2]
>>> next(a)
Traceback (most recent call last):
File "<pyshell#313>", line 1, in <module>
next(a)
StopIteration
现在,当我从生成器中创建一个列表时,我得到了这个:
>>> list(gen())
[[2], [2], [2]]
也就是说,它似乎每次都会产生最后一个计算值。
这是一个 python 错误还是我遗漏了什么?
【问题讨论】:
标签: python python-3.x generator