浅谈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 相关文章推荐
python通过BF算法实现关键词匹配的方法
Mar 13 Python
详细讲解用Python发送SMTP邮件的教程
Apr 29 Python
Linux中安装Python的交互式解释器IPython的教程
Jun 13 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
Python爬虫DOTA排行榜爬取实例(分享)
Jun 13 Python
Python学习小技巧总结
Jun 10 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
Numpy(Pandas)删除全为零的列的方法
Sep 11 Python
python3字符串输出常见面试题总结
Dec 01 Python
python的变量和简单数字类型详解
Sep 15 Python
Python中的程序流程控制语句
Feb 24 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多线程抓取网页实现代码
2010/07/22 PHP
选择PHP作为网站开发语言的原因分享
2012/01/03 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
js对象数组按属性快速排序
2011/01/31 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
2016/04/21 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
获取IE浏览器Cookie信息的方法
2017/01/23 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
浅谈javascript的url参数parse和build函数
2017/03/04 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
angular内置provider之$compileProvider详解
2017/09/27 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
python实现带错误处理功能的远程文件读取方法
2015/04/29 Python
Python3 合并二叉树的实现
2019/09/30 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
Python使用ElementTree美化XML格式的操作
2020/03/06 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
python中time tzset()函数实例用法
2021/02/18 Python
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
2015/08/25 面试题
综合办公室主任职责
2013/12/16 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
新春寄语大全
2014/04/09 职场文书
《长征》教学反思
2014/04/27 职场文书
创建文明城市标语
2014/06/16 职场文书
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
警告通知
2015/04/25 职场文书
首次购房证明
2015/06/19 职场文书
搞笑欢迎词大全
2015/09/30 职场文书