详解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编写分析Python程序性能的工具的教程
Apr 01 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
python爬虫租房信息在地图上显示的方法
May 13 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
tensorflow实现将ckpt转pb文件的方法
Apr 22 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python 负数取模运算实例
Jun 03 Python
python实现控制台输出颜色
Mar 02 Python
如何用python插入独创性声明
Mar 31 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 01 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
php 无极分类(递归)实现代码
2010/01/05 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
js技巧--转义符"\"的妙用
2007/01/09 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
JavaScript实现简单的数字倒计时
2015/05/15 Javascript
基于JavaScript代码实现pc与手机之间的跳转
2015/12/23 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
Vue核心概念Action的总结
2019/01/18 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
vuex state中的数组变化监听实例
2019/11/06 Javascript
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python动态加载包的方法小结
2016/04/18 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
PyQt5实现拖放功能
2018/04/25 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
python实现微信小程序自动回复
2018/09/10 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
Python openpyxl 插入折线图实例
2020/04/17 Python
Python如何实现爬取B站视频
2020/05/20 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
HTML5轻松实现全屏视频背景的示例
2018/04/23 HTML / CSS
澳大利亚宠物食品和药物在线:Jumbo Pets
2018/03/24 全球购物
澳大利亚优惠网站:Deals.com.au
2019/07/02 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
安全演讲稿大全
2014/05/09 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
军训通讯稿范文
2015/07/18 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书