Python浅拷贝、深拷贝

浅拷贝和深拷贝是处理复杂数据结构(如列表、字典、对象等)时的两种复制方式,核心区别在于是否复制嵌套的数据结构:
 

1. 浅拷贝(Shallow Copy)

只复制最外层的数据,而嵌套的子对象(如列表中的列表、字典中的列表等)不会被复制,而是共享同一份内存地址。
 
举例:
L = [1, 2, [3, 4]]
a = L.copy()  # 浅拷贝

a[0] = 100    # 修改外层元素,不影响原列表
a[2][0] = 300 # 修改嵌套列表的元素,会影响原列表

print(L)  # 输出 [1, 2, [300, 4]]

2. 深拷贝(Deep Copy)

完全复制所有层级的数据,包括嵌套的子对象,原对象和副本完全独立,修改任何一方都不会影响另一方。
 
举例:
import copy  # 需要导入copy模块

L = [1, 2, [3, 4]]
b = copy.deepcopy(L)  # 深拷贝

b[0] = 100    # 修改外层元素,不影响原列表
b[2][0] = 300 # 修改嵌套列表的元素,也不影响原列表

print(L)  # 输出 [1, 2, [3, 4]] 

总结:

  • 如果数据结构是单层(如简单列表、字典),浅拷贝和深拷贝效果一样。
  • 如果数据结构有嵌套(如列表里包含列表),浅拷贝会共享嵌套部分,深拷贝则完全独立。
 
需要深拷贝时,要使用 copy 模块的 deepcopy() 方法。
posted @ 2025-09-30 22:59  我歌且谣  阅读(7)  评论(0)    收藏  举报