我正在尝试初始化表示 3x3 数组的列表列表:
import copy
m = copy.deepcopy(3*[3*[0]])
print(m)
m[1][2] = 100
print(m)
Run Code Online (Sandbox Code Playgroud)
输出是:
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
[[0, 0, 100], [0, 0, 100], [0, 0, 100]]
Run Code Online (Sandbox Code Playgroud)
这不是我所期望的,因为每行的最后一个元素是共享的!我确实通过使用得到了我需要的结果:
m = [ copy.deepcopy(3*[0]) for i in range(3) ]
Run Code Online (Sandbox Code Playgroud)
但我不明白为什么第一个(和更简单的)形式不起作用。不是deepcopy应该很深吗?