浅谈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 相关文章推荐
python3序列化与反序列化用法实例
May 26 Python
理解python正则表达式
Jan 15 Python
Python模拟登录的多种方法(四种)
Jun 01 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
python实现的MySQL增删改查操作实例小结
Dec 19 Python
python生成随机红包的实例写法
Sep 02 Python
Python 复平面绘图实例
Nov 21 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
Python操作redis和mongoDB的方法
Dec 19 Python
python序列化与数据持久化实例详解
Dec 20 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
详解python对象之间的交互
Sep 29 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 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
认识并使用PHP超级全局变量
2010/01/26 PHP
PHP isset()与empty()的使用区别详解
2010/08/29 PHP
php判断输入是否是纯数字,英文,汉字的方法
2015/03/05 PHP
PHP与以太坊交互详解
2018/08/24 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
Javascript attachEvent传递参数的办法
2009/12/14 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
SyntaxHighlighter语法高亮插件使用说明
2011/08/14 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
详解JS面向对象编程
2016/01/24 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
2017/07/17 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
Python+tkinter使用40行代码实现计算器功能
2018/01/30 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
学习和使用python的13个理由
2019/07/30 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
Python如何计算语句执行时间
2019/11/22 Python
Python 使用 prettytable 库打印表格美化输出功能
2019/12/26 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
使用Python制作一个数据预处理小工具(多种操作一键完成)
2021/02/07 Python
2014年服装销售工作总结
2014/11/27 职场文书
拾金不昧表扬信
2015/01/16 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis