CodeWalk

Python 的拷贝方式对比

作者:孤独的心 · 2026-05-30 12:55

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 的对象。