python中的深拷贝和浅拷贝_python哪个使用了软拷贝-程序员宅基地

技术标签: python  

python中的深拷贝和浅拷贝

浅拷贝意即只拷贝引用,仍然指向同一个内存地址,修改其中任何一个都会使所有的引用改变

注意:
    和java不同的地方在于python中的'=='比较的是内容,is 比较的内存地址,而java中 '==' 比较的是内存地址,equls则比较内容
a = [1,2,3]
b = a
print(a == b)               # True
print(a is b)               # True
a[0] = 4
print(a,'<==>',b)           # [4,2,3]==[4,2,3]

print(id(a),'<==>',id(b))   # 内存地址相同

深拷贝则相反,如果要拷贝的对象有引用其他对象,不论深浅层次全部递归拷贝至新的对象(意即拷贝内容至新的内存地址当中, 即使被拷贝对象是元组类型),新旧之间相对独立,此时修改被拷贝对象不会影响深拷贝之后的内容

import copy
a = [1,2,3]
b = [4,5,6]
c = [a,b]
e = copy.deepcopy(c)
print(c == e)               # True
print(c is e)               # False
print(id(e),'<==>',id(c))   # 内存地址不相同

另外还有copy方法,只会拷贝第一层内容,第二层及以下仍保持引用,
注意,如果是元组等不可变类型,则会直接使用软拷贝方式

a = [1,2,3]
b = [4,5,6]
c = [a,b]
e = (a,b)
f = copy.copy(c)
g = copy.copy(e)
print(f is c )              # False
print(id(f),'<==>',id(c))   # 不相同

print(g is e)               # True
print(id(g),'<==>',id(e))   # 相同

a[0] = 7
print(f)                    # [[7,2,3][4,5,6]]
print(g)                    # [[7,2,3][4,5,6]]
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_36711420/article/details/79382314

智能推荐

函数传值的三种方法_c语言 怎么实现函数参数可传可不传-程序员宅基地

文章浏览阅读1.9k次。第一种:#include using namespace std;void myswap(int x,int y){ int t; t=x; x=y; y=t;}int main(){ int a,b; cout cin>>a>>b; myswap(a,b); cout cout _c语言 怎么实现函数参数可传可不传

web聊天自动回复--HTML_网页自动回复html-程序员宅基地

文章浏览阅读4.4k次。&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8" /&gt; &lt;title&gt;&lt;/title&gt; &lt;link href="css/css.css" type="text/css" rel="styles_网页自动回复html

【算法基础】冒泡排序解析_3473: 【冒泡排序】数组元素的排序-程序员宅基地

文章浏览阅读2.3k次,点赞3次,收藏4次。在我们日常喝可乐雪碧的过程中,会看见无数气泡向水面移动,直到冒出水面,气泡比水轻会向前移动,我们称这种现象为冒泡。在我们数组排序中,每一个数组元素根据大小比对,小的元素不断向前移动,如同气泡在冒出一样,我们称这种排序方法为冒泡排序。冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。_3473: 【冒泡排序】数组元素的排序

华硕固件,梅林固件,高恪固件等等有什么区别?-程序员宅基地

文章浏览阅读1.1w次。华硕固件、梅林固件、高恪固件等都是硬路由的“操作系统”,不是想刷就能刷的,不同的操作系统用于不同的平台。目前,硬路由的芯片来自四大厂商:博通、高通、联发科、瑞昱。(Realtek)。其中博通、高通的方案性能好,稳定性高,得到了华硕、网件等这些路由器厂商的鼎力支持,联发科的芯片性价比高,得到了国内TP-Link、腾达、小米等厂商的支持,而瑞昱(Reltek,称为螃蟹芯片)因为创新力不足,慢慢推出了主流路由器市场。梅林——博通博通芯片作为行业高端的头把交椅,得到了..._高恪固件

GPT是否解决了信息抽取问题?-程序员宅基地

文章浏览阅读909次,点赞16次,收藏14次。在信息抽取任务上,GPT还落后于专用的有监督模型; 对于困难的任务,落后的更多;提出使用软匹配更准确的评估效果;对鲁棒性和错例进行了分析

【创意坊】未来对话:激进AI崛起,探索国内CHATGPT,开启超智对话体验!-程序员宅基地

文章浏览阅读1.9w次,点赞25次,收藏19次。《未来对话:激进AI崛起,探索国内CHATGPT,开启超智!》文章聚焦于中国国内的一股激进AI力量,正是这股力量将开启我们对CHATGPT和GPT-4的全新探索。博客生动地描绘了中国国内ChatGPT项目,这个引人注目的力量直面全球AI竞技场,成为“全球第一直接对标ChatGPT ja GPT-4的顶级力量”。文章详细介绍了该项目独具的技术优势,突显了其在智能对话领域的卓越性能。通过独特技术手段,开发者成功打造了一个与ChatGPT及GPT-4直接竞争的系统,标志着中国在全球AI领域的引领地位。

随便推点

自考工作分析之工作分析的历史与发展_工作分析的历史 苏格拉底-程序员宅基地

文章浏览阅读1.4k次。一、工作分析的产生与发展(一)工作分析的思想探源 工作分析的思想起源于社会分工思想,先驱工作者:管仲、旬况、苏格拉底、柏拉图、亚当.斯密。(二)西方国家工作分析的发展历程 (1)工作分析的萌芽 1747年,狄德罗在编纂百科全书的过程实施了一次工作分析。 (2)泰勒的科学管理原理 系统的工作分析最早出现于19世纪末20世纪初。它是美国科学管理之父--F.W._工作分析的历史 苏格拉底

重写与重载_重载和重写-程序员宅基地

文章浏览阅读2.5k次。从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。..._重载和重写

CodeForces - 342A-程序员宅基地

文章浏览阅读268次。A. Xenia and Divisorstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputXenia the mathematician has a sequence_codeforces - 342a

局域网的搭建_内部局域网搭建csdn-程序员宅基地

文章浏览阅读357次,点赞2次,收藏3次。一.对等网络搭建1.先建立如下图所示的网络拓扑2.使用右侧面板第二项Place Note注释交换机3.使用右侧面板第四项调色板对话框填充工作区将“No Fill”切换为“Fill Color”选择绘制矩形Select Outline Color为黑色绘制蓝色对话框放置在楼层二绘制黄色对话框放置在楼层一填充结果如下图所示:二.完成基础配置,测试连通性测试从ping 192.168.1.2到192.168.1.1的连通性测试从ping 192.168.1.1到1_内部局域网搭建csdn

百度地图 计算两点间 角度 用于自定义轨迹播放_百度地图测角度-程序员宅基地

文章浏览阅读347次。function getRote(fromPoint,toPoint){var f = _map.pointToPixel(fromPoint);//_map为地图实例var m = _map.pointToPixel(toPoint);if (m.x != f.x) { var k = (m.y - f.y) / (m.x - f.x), g = Math.atan(k); e = g * 360 / (2 * Math.PI); if (m.x < f..._百度地图测角度

C++学习著作!(——本人已经走了弯路,大家吸取教训)_concept, model 和 refinement-程序员宅基地

文章浏览阅读1.4k次。发展历程C++语言发展大概可以分为三个阶段:  第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;OO思维。 《C++程序设计教程》(钱能著),《C++ Primer中文版》,《Effective C++》、《More Effective_concept, model 和 refinement