Python 的拷贝方式对比
Python 中怎样进行对象的浅拷贝和深拷贝?请对比切片、copy.copy、copy.deepcopy 的区别。
回答
孤独的心
浅拷贝方式:
import copy
lst = [[1, 2], [3, 4]]
# 方法1: 切片
shallow1 = lst[:]
# 方法2: list() 构造函数
shallow2 = list(lst)
# 方法3: copy.copy
shallow3 = copy.copy(lst)
# 方法4: 列表推导式
shallow4 = [x for x in lst]
所有浅拷贝结果相同:外层是新列表,内层列表仍引用原对象。
深拷贝:
deep = copy.deepcopy(lst)
# 完全独立,包括所有嵌套对象
deepcopy 会处理循环引用问题,但可能较慢且不适用于不可 pickle 的对象。