Python 深浅拷贝详解
在 Python 中,理解深拷贝(deep copy)和浅拷贝(shallow copy)对于处理复杂的数据结构,如列表、字典或自定义对象,是非常重要的。这两种拷贝方式决定了数据在内存中的复制方式,进而影响程序的运行结果。
浅拷贝
1. 定义
浅拷贝是一种复制操作,它创建一个新对象,并将原对象的内容复制到新对象中。对于原对象内部的子对象,浅拷贝不会递归地复制它们,而是直接引用这些子对象。因此,浅拷贝后的对象和原对象共享内部的子对象。
2. 实现方式
(1)使用 copy 模块的 copy() 函数
import copy
original_list = [1, 2, [3, 4]]
shallow_copied_list = copy.copy(original_list)
(2)使用列表、字典等数据结构的工厂函数
original_list = [1, 2, [3, 4]]
shallow_copied_list = list(original_list) # 列表的工厂函数
(3)使用切片操作(适用于列表)
original_list = [1, 2, [3, 4]]
shallow_copied_list = original_list[:] # 切片操作
(4)使用字典的 copy() 方法
original_dict = {'a': 1, 'b': [2, 3]}
shallow_copied_dict = original_dict.copy() # 字典的 copy() 方法
3. 特点
- 新对象,旧引用:浅拷贝会创建一个新对象,但对象内部的子对象仍然是原对象中子对象的引用。
- 共享子对象:如果原对象包含可变子对象(如列表、字典等),修改这些子对象会影响浅拷贝后的对象。
- 性能较高:由于浅拷贝不会递归复制子对象,因此它的性能比深拷贝更高。
4. 示例
示例 1:修改浅拷贝后的对象
import copy
original_list = [, , [, ]]
shallow_copied_list = copy.copy(original_list)
shallow_copied_list[] =
shallow_copied_list[][] =
(, original_list)
(, shallow_copied_list)







