浅谈python中copy和deepcopy中的区别


Posted in Python onOctober 23, 2017

在下是个编程爱好者,最近将魔爪伸向了Python编程。。。。。遇到copy和deepcopy感到很困惑,现在针对这两个方法进行区分,一种是浅复制(copy),一种是深度复制(deepcopy)。

首先说一下deepcopy,所谓的深度复制,在这里我理解的是完全复制然后变成一个新的对象,复制的对象和被复制的对象没有任何关系,彼此之间无论怎么改变都相互不影响。

然后说一下copy,在这里我分为两类来说,一种是字典数据类型的copy函数,一种是copy包的copy函数。

一、字典数据类型的copy函数,当简单的值替换的时候,原始字典和复制过来的字典之间互不影响,但是当添加,删除等修改操作的时候,两者之间会相互影响。

(1)值替换

import copy 
d = { 
  'name' : ['An','Assan'] 
} 
c = d.copy() 
dc = copy.deepcopy(d) 
d['name'] = ['an'] 
print c 
print d 
print dc

结果如下:

{'name': ['An', 'Assan']} 
{'name': ['an']} 
{'name': ['An', 'Assan']}

(2)值修改

import copy 
d = { 
  'name' : ['An','Assan'] 
} 
c = d.copy() 
dc = copy.deepcopy(d) 
d['name'].append('shu') 
print c 
print d 
print dc

结果如下:

{'name': ['An', 'Assan', 'shu']} 
{'name': ['An', 'Assan', 'shu']} 
{'name': ['An', 'Assan']}

二、copy包中的copy函数,无论是修改还是值替换两者之间都互不影响。

import copy 
seq = [1,2,3] 
seq1 = seq 
seq2 = copy.copy(seq) 
seq3 = copy.deepcopy(seq) 
seq.append(4) 
seq2[2] = 5 
print seq,seq1,seq2,seq3

结果如下:

[1, 2, 3, 4] [1, 2, 3, 4] [1, 2, 5] [1, 2, 3]

在上面代码中,sql1 = seq其实是同是指向同一个对象地址,使用的同一个对象引用。

总结

以上就是本文关于浅谈python中copy和deepcopy中的区别的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:python实现微信接口(itchat)详细介绍、基于Python和Scikit-Learn的机器学习探索等,有什么问题可以随时留言,小编会及时回复大家的。小编也是刚开始学习Python,下面推荐本站基本关于Python的书籍,免费下载,供大家学习参考:

Python算法教程 ([挪威]赫特兰) 中文完整pdf扫描版

Python核心编程(第3版) (美.Wesley Chun) 中文pdf完整版

希望大家能够喜欢,感谢朋友们对三水点靠木网站的支持!

Python 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
20招让你的Python飞起来!
Sep 27 Python
Python输出带颜色的字符串实例
Oct 10 Python
Tensorflow加载预训练模型和保存模型的实例
Jul 27 Python
使用PyQt4 设置TextEdit背景的方法
Jun 14 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
Feb 12 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
学习Python爬虫的几点建议
Aug 05 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 17 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
Python 中random 库的详细使用
Jun 03 Python
python的构建工具setup.py的方法使用示例
Oct 23 #Python
python使用pyqt写带界面工具的示例代码
Oct 23 #Python
基于Django的python验证码(实例讲解)
Oct 23 #Python
itchat接口使用示例
Oct 23 #Python
python实现微信接口(itchat)详细介绍
Oct 23 #Python
python爬虫_微信公众号推送信息爬取的实例
Oct 23 #Python
Python 模拟员工信息数据库操作的实例
Oct 23 #Python
You might like
PHP实现获取中英文首字母
2015/06/19 PHP
php 三大特点:封装,继承,多态
2017/02/19 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
javascript生成随机大小写字母的方法
2014/02/20 Javascript
JavaScript中通过prototype属性共享属性和方法的技巧实例
2015/03/13 Javascript
JavaScript获取页面中第一个锚定文本的方法
2015/04/03 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
Es6 Generator函数详细解析
2018/02/24 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
收集的几个Python小技巧分享
2014/11/22 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
Python中标准库OS的常用方法总结大全
2017/07/19 Python
下载官网python并安装的步骤详解
2019/10/12 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
Pycharm2020.1安装中文语言插件的详细教程(不需要汉化)
2020/08/07 Python
python判断元素是否存在的实例方法
2020/09/24 Python
python3中TQDM库安装及使用详解
2020/11/18 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
高三体育教学反思
2014/01/29 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
最美乡村教师观后感
2015/06/11 职场文书
老干部座谈会主持词
2015/07/03 职场文书
校友会致辞
2015/07/30 职场文书
利用python做数据拟合详情
2021/11/17 Python