Python:为什么附加到列表会产生相同的值

Mor*_*rty 0 python

这是我的代码:

a = []
res = []
for i in range(0, 3):
    a.append(i)
    res.append(a)
print(res)
Run Code Online (Sandbox Code Playgroud)

结果是:

[[0, 1, 2], [0, 1, 2], [0, 1, 2]] 
Run Code Online (Sandbox Code Playgroud)

但我希望结果是:

[[0], [0, 1], [0, 1, 2]]
Run Code Online (Sandbox Code Playgroud)

我知道解决方案是使用浅拷贝:res.append(a[:]). 但是有人能告诉我为什么吗?

Sco*_*ter 5

您将相同的内容 ( a)附加到res3 次,因此它出现了 3 次。您a在每次调用之间更改了 的内容这一事实append无关紧要。如果给每个呼叫append被赋予它自己的拷贝a,那么你会得到你所期望的结果。