python深拷贝和浅拷贝的区别_【转】python的复制,深拷贝和浅拷贝的区别
在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用
一般有三种方法,
alist=[1,2,3,["a","b"]]
(1)直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变
>>> b=alist
>>> print b
[1, 2, 3, ['a', 'b']]
>>> alist.append(5)
>>> print alist;print b
[1, 2, 3, ['a', 'b'], 5]
[1, 2, 3, ['a', 'b'], 5]
(2)copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变
>>> import copy
>>> c=copy.copy(alist)
>>> print alist;print c
[1, 2, 3, ['a', 'b']]
[1, 2, 3, ['a', 'b']]
>>> alist.append(5)
>>> print alist;print c
[1, 2, 3, ['a', 'b'], 5]
[1, 2, 3, ['a', 'b']]
>>> alist[3]
['a', 'b']
>>> alist[3].append('cccc')
>>> print alist;print c
[1, 2, 3, ['a', 'b', 'cccc'], 5]
[1, 2, 3, ['a', 'b', 'cccc']] 里面的子对象被改变了
(3)深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变
>>> import copy
>>> d=copy.deepcopy(alist)
>>> print alist;print d
[1, 2, 3, ['a', 'b']]
[1, 2, 3, ['a', 'b']]始终没有改变
>>> alist.append(5)
>>> print alist;print d
[1, 2, 3, ['a', 'b'], 5]
[1, 2, 3, ['a', 'b']]始终没有改变
>>> alist[3]
['a', 'b']
>>> alist[3].append("ccccc")
>>> print alist;print d
[1, 2, 3, ['a', 'b', 'ccccc'], 5]
[1, 2, 3, ['a', 'b']] 始终没有改变
python深拷贝和浅拷贝的区别_【转】python的复制,深拷贝和浅拷贝的区别相关推荐
- python除法函数一般如何命名_关于python:当用于除法时,’/’和’//’之间有什么区别?...
使用一个对另一个有好处吗?在Python2中,它们似乎都返回相同的结果: >>> 6/3 2 >>> 6//3 2 请参考整数除法的问题,因为引入了//运算符进行整 ...
- c语言与python的语法区别_来自python的C语言(基本语法),从,Python,看,基础,篇
一个学过C/C++的咸鱼,最近学起了Python,不得不说,知识还是老知识,语法也简单多了,但就是容易搞混.大致总结一下Python与C的区别,以后别张冠李戴啦,嘻嘻. Part 1.输入与输出 输 ...
- python字符串和字节串有什么区别_对于Python中的字节串bytes和字符串以及转义字符的新的认识...
事情的起因是之前同学叫我帮他用Python修改一个压缩包的二进制内容用来做fuzz,根据他的要求,把压缩包test.rar以十六进制的方式打开,每次修改其中一个十六进制字符串并保存为一个新的rar用来 ...
- anaconda和python区别_初学 Python 者自学 Anaconda 的正确姿势是什么?
事实上Anaconda 和 Jupyter notebook已成为数据分析的标准环境. 简单来说,Anaconda是包管理器和环境管理器,Jupyter notebook 可以将数据分析的代码.图像和 ...
- python中numpy数组的合并_基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...
- python增量赋值是什么意思_关于python中的增量赋值的理解
增量赋值运算符 += 和 *= 的表现取决于它们的第一个操作对象 += 操作首先会尝试调用对象的 __ iadd__方法,如果没有该方法,那么尝试调用__add__方法,所以+= 与 + 的区别实质是 ...
- python中的列表和元组_浅析Python中的列表和元组
区别列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数). 元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变. 元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问 ...
- python爬取b站评论_用python 抓取B站视频评论,制作词云
python 作为爬虫利器,与其有很多强大的第三方库是分不开的,今天说的爬取B站的视频评论,其实重点在分析得到的评论化作嵌套的字典,在其中取出想要的内容.层层嵌套,眼花缭乱,分析时应细致!步骤分为以下 ...
- python基础语法加爬虫精进_从Python安装到语法基础,这才是初学者都能懂的爬虫教程...
Python和PyCharm的安装:学会Python和PyCharm的安装方法 变量和字符串:学会使用变量和字符串的基本用法 函数与控制语句:学会Python循环.判断语句.循环语句和函数的使用 Py ...
- python发行版是什么意思_致 Python 初学者
当下是一个喧嚣.浮躁的时代.我们总是被生活中大量涌现的热点所吸引,几乎没有深度阅读和思考的时间和机会.我始终认为,学习是需要沉下心来慢慢钻研的,是长期的:同时,学习不应该被赋予太多的功利色彩.一个Py ...
最新文章
- 自学python都需要哪些书-【经验分享】自学Python的学习顺序!附学习资料
- Ubuntu下用gcc与nasm联合编译
- python标准词匹配_用 Python 自动化办公能做到哪些有趣或有用的事情?
- 26、Windows API Shell编程(2)
- 云服务器上划虚拟主机,云服务器上划虚拟主机
- Hibernate_01
- python做测试需要哪些技能_测试人员需要具备哪些基本技能
- PID闭环控制系统的Simulink仿真
- 1.4多媒体技术的发展历史
- html留言页面设计,html的留言板制作(js)
- 计算机中缺少d3dx11_43.dll,韩博士传授win10系统运行软件提示计算机丢失d3dx11_43.dll的处理对策...
- 前端200道面试题及答案(更新中)
- 位运算实现加减乘除运算——超详细C语言描述
- 卷积神经网络——灰度图像的卷积
- Flask学习(二)-Jinji2模板引擎
- Python+selenium注册唯一账号
- Unity中Scale详解
- 什么是预测区间和置信区间
- 前端SEO优化技术汇总
- Allegro输出DXF文件操作指导