详解python深浅拷贝区别


Posted in Python onJune 24, 2019

在Python中对象的赋值其实就是对象的引用。当创建一个对象,把它赋值给另一个变量的时候,python并没有拷贝这个对象,只是拷贝了这个对象的引用而已。

浅拷贝:拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是,把对象复制一遍,但是该对象中引用的其他对象我不复制

深拷贝:外围和内部元素都进行了拷贝对象本身,而不是引用。也就是,把对象复制一遍,并且该对象中引用的其他对象我也复制。

深浅拷贝的作用

1,减少内存的使用

2,以后在做数据的清洗、修改或者入库的时候,对原数据进行复制一份,以防数据修改之后,找不到原数据。

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

>>>a = {1: [1,2,3]}>>> b = a.copy()>>> a, b({1: [1, 2, 3]}, {1: [1, 2, 3]})>>> a[1].append(4)>>> a, b({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})

深度拷贝需要引入 copy 模块:

>>>import copy>>> c = copy.deepcopy(a)>>> a, c({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})>>> a[1].append(5)>>> a, c({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})

1、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

详解python深浅拷贝区别

2、b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

详解python深浅拷贝区别

Python 相关文章推荐
Python中的包和模块实例
Nov 22 Python
python获得linux下所有挂载点(mount points)的方法
Apr 29 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
快速了解python leveldb
Jan 18 Python
python实现拓扑排序的基本教程
Mar 11 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
在SQLite-Python中实现返回、查询中文字段的方法
Jul 17 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python selenium实现发送带附件的邮件代码实例
Dec 10 Python
python3 webp转gif格式的实现示例
Dec 10 Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 Python
pandas计数 value_counts()的使用
Jun 24 #Python
pandas DataFrame 交集并集补集的实现
Jun 24 #Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 #Python
pandas.cut具体使用总结
Jun 24 #Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 #Python
python日期相关操作实例小结
Jun 24 #Python
使用Python Pandas处理亿级数据的方法
Jun 24 #Python
You might like
ThinkPHP实现附件上传功能
2017/04/27 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
javascritp实现input输入框相关限制用法
2007/06/29 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
JavaScript创建对象的七种方式全面总结
2017/08/21 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
详解vue 命名视图
2019/08/14 Javascript
Nodejs在局域网配置https访问的实现方法
2020/10/17 NodeJs
用python实现批量重命名文件的代码
2012/05/25 Python
Python中使用tarfile压缩、解压tar归档文件示例
2015/04/05 Python
python九九乘法表的实例
2017/09/26 Python
python使用sqlite3时游标使用方法
2018/03/13 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
tensorflow实现加载mnist数据集
2018/09/08 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python Pandas 箱线图的实现
2019/07/23 Python
Python实现遗传算法(二进制编码)求函数最优值方式
2020/02/11 Python
如何理解python中数字列表
2020/05/29 Python
Python decimal模块使用方法详解
2020/06/08 Python
Python实现EM算法实例代码
2020/10/04 Python
个人实用简单的自我评价
2013/10/19 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
社区端午节活动方案
2014/01/28 职场文书
初中家长寄语
2014/04/02 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
酒店管理毕业生自荐信
2014/05/25 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
人事专员岗位说明书
2014/07/29 职场文书
社区工作者个人总结
2015/02/28 职场文书
圣诞晚会主持词
2015/07/01 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书