浅谈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.4中新引入的asyncio模块
Apr 08 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
python中实现精确的浮点数运算详解
Nov 02 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
Nov 29 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
python3 字符串知识点学习笔记
Feb 08 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
matplotlib事件处理基础(事件绑定、事件属性)
Feb 03 Python
使用numpy nonzero 找出非0元素
May 14 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使用json_encode对变量json编码
2014/04/07 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
js this 绑定机制深入详解
2020/04/30 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
在vue中嵌入外部网站的实现
2020/11/13 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
通过python下载FTP上的文件夹的实现代码
2013/02/10 Python
Python中random模块用法实例分析
2015/05/19 Python
python Django模板的使用方法
2016/01/14 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
使用Python搭建虚拟环境的配置方法
2018/02/28 Python
Python常见数字运算操作实例小结
2019/03/22 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
pytorch判断是否cuda 判断变量类型方式
2020/06/23 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
《难忘的泼水节》教学反思
2014/02/27 职场文书
涉密人员保密承诺书
2014/05/28 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
七年级作文之冬景
2019/11/07 职场文书
MySQL数据库中varchar类型的数字比较大小的方法
2021/11/17 MySQL