Python 浅拷贝和深拷贝

在 Python 中,浅拷贝和深拷贝是两种不同的拷贝方式,用来复制对象。它们的区别主要体现在是否递归复制对象内部的子对象。

import copy
#原始列表
original_list = [1,2,3,[4,5,['T','E','S','T']]]
#原始列表直接赋值给新的列表
new_list = original_list 
#浅拷贝
shallow_copied_list = original_list .copy()
#深拷贝
deep_copied_list = copy.deepcopy(original_list )

1. 浅拷贝 (shallow copy)

浅拷贝只复制对象本身,而不会递归复制它包含的子对象。换句话说,浅拷贝的新对象和原对象共享子对象的引用。
外层对象:original_listshallow_copied_list是两个独立的对象。
内层对象(嵌套列表):它们共享同一个引用。当修改 shallow_copied_list中的嵌套列表元素时,original_list 中的嵌套列表也会改变。


两个列表的外层是不同的对象,但它们的嵌套列表是同一个对象。
修改原始列表里的值:

import copy
original_list = [1,2,3,[4,5,['T','E','S','T']]]
new_list = original_list 
shallow_copied_list = original_list.copy()
deep_copied_list = copy.deepcopy(original_list)
original_list[1] = 999
original_list[3][1] = 999

2. 深拷贝 (deep copy)

深拷贝会递归地复制对象本身以及它包含的所有子对象,因此新对象和原对象完全独立。
外层对象:original_listdeep_copied_list 是独立的对象。
内层对象(嵌套列表):deep_copied_list 中的嵌套列表是原对象的深拷贝,因此两者互不影响。

总结:

浅拷贝:只复制最外层的对象,内层对象引用共享。
深拷贝:递归复制所有层级的对象,每个对象都是独立的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容