相关疑难解决方法(0)

如何制作复杂列表的完全非共享副本?(深层复制还不够)

看看这个Python代码:

a = [1, 2, 3]
b = [4, 5, 6]
c = [[a, b], [b, a]] # [[[1, 2, 3], [4, 5, 6]], [[4, 5, 6], [1, 2, 3]]]
c[0][0].append(99)   # [[[1, 2, 3, 99], [4, 5, 6]], [[4, 5, 6], [1, 2, 3, 99]]]
Run Code Online (Sandbox Code Playgroud)

请注意修改一个元素如何修改c到处.也就是说,如果99附加到c[0][0],则也附加到c[1][1].我猜这是因为Python巧妙地引用相同的对象 for c[0][0]c[1][1].(那是他们的id()是一样的.)

问题:是否可以执行某些操作以c使其列表元素可以安全地进行本地修改?上面只是一个例子,我的真正问题有一个更复杂的列表,但有类似的问题.

(对不起,上面提到的问题很糟糕.Python大师请随意修改问题或标签以更好地表达此查询.)

python copy list

6
推荐指数
4
解决办法
1万
查看次数

标签 统计

copy ×1

list ×1

python ×1