copy&deepcopy
import copy
字典参照列表结论,看是否有深层嵌套。
a = {'name':1,'age':2}
b = a
a['name'] = 'ff'
print(a)
print(b)
print(id(a),id(b))
a = {'name':1,'age':2}
b = copy.deepcopy(a)
a['name'] = 'ff'
print(a)
print(b)
print(id(a),id(b))
"""
{'name': 'ff', 'age': 2}
{'name': 'ff', 'age': 2}
4301093048 4301093048
{'name': 'ff', 'age': 2}
{'name': 1, 'age': 2}
4301093120 4302783256
"""
字符串和元组等不可变数据类型,打死都不变
a = 'ff'
b = a
a = 'ff1'
print(a,b) # ff1 ff
a = 'ff'
b = copy.copy(a)
a = 'ff1'
print(a,b) # ff1 ff
a = 'ff'
b = copy.deepcopy(a)
a = 'ff1'
print(a,b) # ff1 ff
a = [1,2,3]
b = [4,5,6]
c = [a,b]
d = c
print(id(c),id(d)) # 4322641352 4322641352
c.append(9)
print(c) # [[1, 2, 3], [4, 5, 6], 9]
print(d) # [[1, 2, 3], [4, 5, 6], 9]
print(id(c),id(d)) # 4322641352 4322641352
d = copy.copy(c)
c.append(9)
print(c) # [[1, 2, 3], [4, 5, 6], 9]
print(d) # [[1, 2, 3], [4, 5, 6]]
c[0].append(8)
print(c) # [[1, 2, 3, 8], [4, 5, 6]]
print(d) # [[1, 2, 3, 8], [4, 5, 6]]
如果只是copy的话,copy.copy() 针对外层依旧是深拷贝,但对内层来讲就是浅拷贝了,会改变值。
d = copy.deepcopy(c)
c.append(9)
print(c) # [[1, 2, 3], [4, 5, 6], 9]
print(d) # [[1, 2, 3], [4, 5, 6]]
c[0].append(8)
print(c) # [[1, 2, 3, 8], [4, 5, 6]]
print(d) # [[1, 2, 3], [4, 5, 6]]
深拷贝, 不管你是啥,只要copy.deepcopy()了。 不管你变不变,我变我是狗。
copy&deepcopy
copy&deepcopy的更多相关文章
- Python面试题之copy/deepcopy详解
copy和deepcopy有什么区别? http://blog.csdn.net/qq_32907349/article/details/52190796 http://iaman.actor/blo ...
- copy.copy()与copy.deepcopy()的详解
copy.copy() 元组和列表调用这个方法效果也不一样. 元组的效果: a = [1,2,3] b = [4,5,6] c = (a,b) e = copy.copy(c) 可以看到:e和c是指向 ...
- Python 浅拷贝copy()与深拷贝copy.deepcopy()
首先我在这介绍两个新的小知识,要在下面用到.一个是函数 id() ,另一个是运算符 is.id() 函数就是返回对象的内存地址:is 是比较两个变量的对象引用是否指向同一个对象,在这里请不要和 == ...
- python中的copy.copy和copy.deepcopy
一个例子就搞清楚 import copy a = [1, 2, 3, 4, ['a', 'b']] #原始对象 b = a #赋值,传对象的引用 c = copy.copy(a) #对象拷贝,浅拷贝 ...
- Python 函数参数引用(传值/传址)/copy/deepcopy
精简版: 传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组 ...
- Python 传值和传址 copy/deepcopy
传值:被调函数局部变量改变不会影响主调函数局部变量 传址:被调函数局部变量改变会影响主调函数局部变量 Python参数传递方式:传递对象引用(传值和传址的混合方式),如果是数字,字符串,元组则传值:如 ...
- copy deepcopy辨析
copy deepcopy讲的是复制源对象的改变对copy出来的对象的影响: 我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在. 所以改变原有被复制对象不会对已经复制 ...
- copy & deepcopy
1 import copy 2 3 字典参照列表结论,看是否有深层嵌套. 4 a = {'name':1,'age':2} 5 b = a 6 a['name'] = 'ff' 7 print(a) ...
- [Python] 等号赋值, copy, deepcopy的区别
参考链接: 1. 介绍python中的可变类型与不可变类型:https://blog.csdn.net/answer3lin/article/details/86430074 (也可以参考转载博客 P ...
随机推荐
- 洛谷 P3379 【模板】最近公共祖先(LCA)Tarjan离线
题目链接:LCA tarjan离线 这道题目WA无数发,最后还是参考了大神的blog 谁会想到因为一个输入外挂WA呢 大概是我的挂是假挂吧...orz(其实加上外挂,速度提升很多) 用链式前向星保存边 ...
- Codeforces 817F MEX Queries
题意:对一个维护三种操作:1.将[l..r]中的数全部加入集合中.2.将集合中[l..r]范围内的数删去.3.将集合中在[l..r]中的数删去,并将之前不在集合中的数加入集合 考虑到最近线段树总是写爆 ...
- Unity 5--全局光照技术
本文整理自Unity全球官方网站,原文:UNITY 5 - LIGHTING AND RENDERING 简介全局光照,简称GI,是一个用来模拟光的互动和反弹等复杂行为的算法,要精确的仿真全局光照非常 ...
- Python3 词汇助手 有道翻译助手 有道导出文件格式转换
根据有道翻译软件的功能,结合实际用途,基于Python3.6写了一个有道翻译助手软件. 测试文件及源代码已上传至:https://github.com/MMMMMichael/Translation- ...
- Caffe-5.2-(GPU完整流程)训练(依据googlenet微调)
上一篇使用caffenet的模型微调.但由于caffenet有220M太大,測试速度太慢.因此换为googlenet. 1. 训练 迭代了2800次时死机,大概20分钟. 使用的是2000次的模型. ...
- libgdx3D第三讲-场景载入
第三讲 场景载入 Loading a scene with LibGDX 网易云地址:id=442771fd5cc6ce8cf9fd30b838a76343&type=note" s ...
- 改动hosts权限
在屏蔽网页.訪问一些特定局域网的时候,都可能须要改动Hosts文件. 只是在改动Hosts文件后.会遇到无法保存的情况,提示"您没有权限在此位置中保存文件,请与管理员联系以获取对应权限&qu ...
- vim 命令整理(自己经常使用)
vimm(vimsual)是Linux/UNIX系列OS中通用的全屏编辑器. vimm分为两种状态,即命令状态和编辑状态.在命令状态下.所键入的字符系统均作命令来处理.如:q代表退出,而编辑状态则是用 ...
- jmeter入门系列文章二 版本号介绍
转载时请标注源自:http://blog.csdn.net/musen518 jmeter版本号公布频率一般为1年,每年会有一个版本号升级 截止2015年底,最新版本号为2.13,最新最全的更新信息一 ...
- Django的Models(三)
ORM操作的一些进阶的方法: ################################################################## # PUBLIC METHODS T ...