相关疑难解决方法(0)

python copy.deepcopy 列表看起来很浅

我正在尝试初始化表示 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应该很深吗?

python deep-copy python-3.x

1
推荐指数
1
解决办法
1291
查看次数

标签 统计

deep-copy ×1

python ×1

python-3.x ×1