python中copy和deepcopy详解
python中标识一个对象唯一身份的是:对象的id(内存地址),对象类型,对象值。
deepcopy是真正意义上的复制,深拷贝,被复制对象完全复制一遍作为独立的新个体,新开辟一块空间。
浅拷贝,不会产生独立对象,等于赋值,只是对原有数据块打上新标签,其中一个标签改变,数据块就会变化。浅拷贝等于赋值,也可以通过copy实现,copy仅拷贝对象本身,浅拷贝不会对其中的子对象进行拷贝,如果对子对象进行修改,拷贝结果也会随着修改。
- 复制的对象中无复杂子对象,即列表中不嵌套列表,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
- 复制的对象中有复杂子对象 (例如列表中的一个子元素是一个列表)如果改变复杂子对象的值(列表中的值)会影响浅复制的值。
import copy
a = [1,2,3,[4,5],1]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)a.append(9)
a[3].append(6)print(a) #[1, 2, 3, [4, 5, 6], 1, 9]
print(b) #[1, 2, 3, [4, 5, 6], 1, 9]
print(c) #[1, 2, 3, [4, 5, 6], 1]
print(d) #[1, 2, 3, [4, 5], 1]print(id(a)) #4594148288
print(id(b)) #4594148288
print(id(c)) #4594455328
print(id(d)) #4592688496x = 'Hello World'
y = x
z = copy.copy(x)
w = copy.deepcopy(x)
print(id(x)) #4617118576
print(id(y)) #4617118576
print(id(z)) #4617118576
print(id(w)) #4617118576# 对于不可变类型(元组、数值,字符串等)为浅拷贝,对象的id值与浅复制原来的值相同
# 对于可变类型(列表、字典等)为深拷贝,
python中copy和deepcopy详解相关推荐
- 2020-09-18 python中copy()和deepcopy()详解
首先直接上结论: -–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. -–而浅复制并不会产生一个独立的对 ...
- python中copy()和deepcopy()详解
参考文章 http://iaman.actor/blog/2016/04/17/copy-in-python **首先直接上结论: -–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独 ...
- python中deepcopy函数_python中copy()和deepcopy()详解
**首先直接上结论: -–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. -–而浅复制并不会产生一个独立 ...
- Python中的高级数据结构详解
这篇文章主要介绍了Python中的高级数据结构详解,本文讲解了Collection.Array.Heapq.Bisect.Weakref.Copy以及Pprint这些数据结构的用法,需要的朋友可以参考 ...
- python中 xlrd/xlwt模块详解
python中 xlrd/xlwt模块详解 1.什么是xlrd模块 python操作excel主要用到xlrd和xlwt两个库,即xlrd是读excel,xlwt是写excel库 一.安装xlrd模块 ...
- python中的super用法详解_【Python】【类】super用法详解
一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...
- python中的super用法详解_Python中super函数用法实例分析
本文实例讲述了python中super函数用法.分享给大家供大家参考,具体如下: 这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简 ...
- python classmethod_对Python中的@classmethod用法详解
在Python面向对象编程中的类构建中,有时候会遇到@classmethod的用法. 总感觉有这种特殊性说明的用法都是高级用法,在我这个层级的水平中一般是用不到的. 不过还是好奇去查了一下. 大致可以 ...
- python中copy和deepcopy详细区别
python中copy和deepcopy 在 python 中,标识一个对象唯一身份的是:对象的id(内存地址),对象类型,对象值. deepcopy是真正意义上的复制,深拷贝,被复制对象完全复制一遍 ...
最新文章
- SSM整合及CRUD实现
- 阿里 RocketMQ 如何让双十一峰值之下 0 故障?
- java IO之字节流和字符流-Reader和Writer以及实现文件复制拷贝
- kafka自动提交offset失败:Auto offset commit failed
- installshield安装文件的制作小技巧--附加数据库
- 一觉醒来,没有购房资格了!
- 08Mysql与python交互
- 华为P50渲染图再曝光:居中打孔直屏+徕卡四摄
- java中整形_java中怎样实现60多位整形数字的运算
- 从没有C到ANSI C的认识
- 【C语言】10-字符和字符串常用处理函数
- VS2008快捷键总结
- KITTI数据集解析和可视化
- pygame详细安装教程
- Mac好用的RSS阅读器Reeder使用方法
- 简单的 js 日历控件
- 业务复习-微信登录/第三方登录实现
- 蔚来智驾功能大更新:与其叫NOP+,不如叫NAD-
- 计算机网络---数据链路层PPP协议
- centos 安装安全狗
热门文章
- 【转】发邮件的礼仪汇总---让优秀成为习惯
- 谷歌浏览器打开普通用户_Win7谷歌浏览器怎么设置多用户登录?-Win7谷歌浏览器设置多用户登录的方法 - 河东软件园...
- Android R setenforce 实现
- XCode 真机调试
- iphone 键盘兼容_如何在iPhone上使用单手键盘
- 普通护照出国免签及落地签国家和地区
- 华为hcia网络课程
- “今日头条杯”首届湖北省大学程序设计竞赛 D. Who killed Cock Robin(选择联通子图的方案数,树形dp)
- php中的shell_exec函数,exec与shell_exec函数在PHP中的区别是什么
- 西藏自治区那曲地区谷歌高清卫星地图下载