【转】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']] 始终没有改变
原文链接:https://www.cnblogs.com/xueli/p/4952063.html
转载于:https://www.cnblogs.com/achillis/p/10408399.html
【转】python的复制,深拷贝和浅拷贝的区别相关推荐
- python 深拷贝_详解python的复制,深拷贝和浅拷贝的区别
概述 今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~ 需求: 将一个列表的数据复制到另一个列表中. 思路: 使用列表[:],拿不准可以调用copy模块. 实现方法: #!/u ...
- python的复制,深拷贝和浅拷贝的区别
python的复制,深拷贝和浅拷贝的区别 在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用 一般有 ...
- Python中深拷贝与浅拷贝的区别?
往期面试题: 列举Python中的标准异常类? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三类? 废话不多说,开始今天的题目: 问:说说Pyt ...
- python中的深拷贝与浅拷贝
浅拷贝的时候,修改原来的对象,深拷贝的对象不会发生改变. 对象的赋值 对象的赋值实际上是对象之间的引用:当创建一个对象,然后将这个对象赋值给另外一个变量的时候,python并没有拷贝这个对象,而只是拷 ...
- python中关于深拷贝和浅拷贝的详解
python中关于深拷贝和浅拷贝的详解 概述 在python的语法中,有两种变量的拷贝方式 一种是深拷贝,一种是浅拷贝 我们先说深拷贝 语法 这里需要通过导入系统的copy模块中的deepcopy才可 ...
- python怎么避免浅拷贝_详谈Python中的深拷贝和浅拷贝
在平时工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝. ...
- Python基础:对象的深拷贝和浅拷贝的区别
Python基础:对象的深拷贝和浅拷贝的区别 1 变量与对象 2 不可变对象与可变对象 3 直接赋值 4 浅拷贝 5 深拷贝 参考文献 1 变量与对象 对象:内存中存储数据的实体,有明确的类型.在Py ...
- python中深拷贝与浅拷贝的区别
####################python中的数据类型####################### ##########python中的数据类型有6种,分别为:数字类型如int,float ...
- C++深拷贝与浅拷贝的区别-简单易懂
C++深拷贝与浅拷贝的区别-简单易懂 介绍 浅拷贝就比如像引用类型,而深拷贝就比如值类型. 浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同).对其中任何一个对象的改动都会影响另 ...
- 【C++面试问答】搞清楚深拷贝与浅拷贝的区别
问题 深拷贝和浅拷贝的区别是面试中的常见问题之一,对于不同的编程语言,这个问题的回答可能稍有差别,下面我们就来探索一下它们之间的异同吧. 先来看看在JavaScript对象的深拷贝与浅拷贝的区别: 浅 ...
最新文章
- 专访朱雷:昔日的游戏少年,如今的Python工匠
- Linux运维比较实用的工具
- 推荐算法炼丹笔记:如何让你的推荐系统具有可解释性?
- jquery --- 多选下拉框的移动(穿梭框)
- CV Code | 本周新出计算机视觉开源代码汇总(含图像修复、目标检测、医学图像分割、度量学习等)...
- opend和open的区别_open与open up的区别
- python求直角三角形斜边底下的数值怎么输_如何用用户输入的值求三角形的角,以及如何绘制i...
- [Informix] unload load
- DeepMind智能体自学跑酷:略显智障,结果尚好
- python中datetime函数怎么获得当年年份_Python 日期和时间函数使用指南
- 小程序向webview传参_微信小程序(1)——web-view和小程序间传递参数、发送消息...
- 前端性能优化学习(慕课网)笔记
- RHCSA8考试-root密码破解
- 好好编程-物流项目03【GitHub管理】
- XHTML的目标,规则和细节
- 去除迅雷右侧资源信息栏和迅雷广告,以及迅雷的速度限制修改
- Bitmap对象在内存中的大小和转化为字节流的大小
- Java零散知识点记录——类的方法
- codewhy_vue笔记01
- chrome无法打开无痕模式的解决方案
热门文章
- Maven学习(一)————Maven技术概述
- 猜拳游戏html,JavaScript中实现猜拳小游戏
- bundle 安装_超级小白使用pip安装第三方库的正确姿势
- matlab二元方程组,用matlab解一个二元方程组,会的进,得到解再回答
- 宿松县事业单位计算机基础知识,计算机基础知识试题(事业单位考试)
- vector简单应用
- python捕获异常装饰器_python异常装饰器--比较全的版本了
- html5新增的type类型,html5新增的type类型
- linux 中的时间戳功能,Linux中时间戳取证研究
- matlab 矩阵与向量乘,matlab问题,关于矩阵向量的乘问题