这是我的代码:
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[:]). 但是有人能告诉我为什么吗?
您将相同的内容 ( a)附加到res3 次,因此它出现了 3 次。您a在每次调用之间更改了 的内容这一事实append无关紧要。如果给每个呼叫append被赋予它自己的拷贝的a,那么你会得到你所期望的结果。
| 归档时间: |
|
| 查看次数: |
1766 次 |
| 最近记录: |