我刚刚遇到一个奇怪的Python(3.7.0)行为,我真的不明白,看起来像是一个bug.我想用生成器创建一个字典,但不知怎的,它们都返回相同的值.这是我正在谈论的代码示例:
import itertools
d = {
"a": [-1, 2],
"b": [1, 2],
"c": [20, 20]
}
g = dict()
g2 = dict()
for letter, values in d.items():
g[letter] = (values[0] * values[1] * x for x in itertools.count())
g2[letter] = [values[0] * values[1] * x for x in range(3)]
for i in range(3):
for l, v in g.items():
print(v.__next__())
print(g2)
Run Code Online (Sandbox Code Playgroud)
从我的观点来看,g2元素和g生成器的预期输出是相同的,但是我总是从最新的生成器接收值:
0
0
0
400
400
400
800
800
800
{'a': [0, -2, -4], 'b': [0, 2, 4], 'c': [0, …Run Code Online (Sandbox Code Playgroud)