龙空技术网

【Python程序开发系列】一文搞明白Python对象的深拷贝与浅拷贝

数据杂坛 79

前言:

此刻兄弟们对“python中的复制深浅拷贝”大概比较关怀,同学们都想要学习一些“python中的复制深浅拷贝”的相关资讯。那么小编在网上汇集了一些有关“python中的复制深浅拷贝””的相关知识,希望兄弟们能喜欢,朋友们一起来学习一下吧!

这是我的第242篇原创文章。

一、引言

在Python中,拷贝(copy)操作分为深拷贝(deep copy)和浅拷贝(shallow copy),这两种拷贝方式有不同的特点。本文以列表对象为例说一下各自的特点。

二、实现过程2.1浅拷贝(Shallow Copy)浅拷贝会创建一个新的对象,但是其中的元素是原始对象的引用。对于可变对象(如列表、字典),浅拷贝后的对象中的元素是原始对象中元素的引用,修改拷贝后的对象中的元素会影响原始对象中的元素。使用copy()方法可以进行浅拷贝。

import copyoriginal_list = [1, 2, [3, 4]]shallow_copied_list = copy.copy(original_list)# 修改浅拷贝后的列表shallow_copied_list[2][0] = 5print(original_list)  # [1, 2, [5, 4]]
2.2 深拷贝(Deep Copy)深拷贝会创建一个新的对象,并且递归地复制原始对象中的所有元素。不论原始对象的元素是可变对象还是不可变对象,深拷贝后的对象中的元素都是原始对象的副本,修改拷贝后的对象不会影响原始对象。使用deepcopy()方法可以进行深拷贝。
import copyoriginal_list = [1, 2, [3, 4]]deep_copied_list = copy.deepcopy(original_list)# 修改深拷贝后的列表deep_copied_list[2][0] = 5print(original_list)  # [1, 2, [3, 4]]
三、小结浅拷贝只复制对象本身和其中包含的引用,而不会复制引用的对象。深拷贝会递归地复制整个对象树,包括对象中的所有子对象。深拷贝消耗的资源更多,但能够完全独立地修改拷贝后的对象,不会影响原始对象。

作者简介:

读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。关注gzh:数据杂坛,获取数据和源码学习更多内容。

原文链接:【Python程序开发系列】一文搞明白Python对象的深拷贝与浅拷贝(案例)

标签: #python中的复制深浅拷贝