+19 投票
分类:Python编程与实践 | 用户: (5.8k 分)

例如:

a = [['1',1 ], ['2', 2], ['4', 34], ['55', 54]]
c_a = a.copy()
c_a

[['1', 1], ['2', 2], ['4', 34], ['55', 54]]

a[2] = ['66', 6]
c_a

[['1', 1], ['2', 2], ['4', 34], ['55', 54]]

a[1][1] = 33
c_a

[['1', 1], ['2', 33], ['4', 34], ['55', 54]]

可以看出copy只是新建了一个列表去存储原来列表中元素的地址,还发现sorted中似乎也运用了这种方法(修改a[1][1]后排序过的列表也会被修改)

这样设计虽然有利于节省空间,但是不会很容易产生许多问题吗?

这种拷贝方法可不可以叫做浅拷贝?Python中进行深拷贝的方法有哪些?

1个回答

+6 投票
用户: (45.4k 分)
采纳于 用户:
 
已采纳

你理解的没错,深拷贝和浅拷贝是有区别的:

copy.deepcopy:深拷贝,即完全复制,会递归复制对象各深度的所有内容

copy.copy:浅拷贝,只有第一层是复制,更深层都只是引用

具体可参加官方文档:copy --- 浅层 (shallow) 和深层 (deep) 复制操作 — Python 3.10.8 文档

也可以参考我之前做的视频:十分钟!彻底弄懂Python深拷贝与浅拷贝机制

欢迎来到 爱可可Q&A ,有什么问题可以尽管在这里提问,你将会收到其他成员的热心回答。
...