python对象的深复制与浅复制
以下操作会会出现浅拷贝的情况
- 使用切片[:]操作
- 使用工厂函数(如list/dir/set)
- 使用copy模块中的copy()函数
对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址)
import copy class Copy_Test(object):def __init__(self,a):self.a = aa = Copy_Test('AAA') c = a #给这个对象再加上一个引用 print(id(a),id(c)) #内存地址一样 list1 = [1,2,3,4,5,6,7,8,9] list2 = list1[:] #切片复制,2个地址 list2[2] = 8899 print(list1,list2) #list2被改变 list无变化 print(id(list1),id(list2))#内存地址不一样 list3 = [1,2,3,4,5,6,[7,8,9]] list4 = list3[:] print(id(list3),id(list4))#内存地址不一样 list4[6][1] = 88 print(list3,list4)#因为有子列表 所以list4被改变,list3也会随之改变 list5 = [8,[9,8,9]] list6 = copy.copy(list5) list6[1][1] = 88 print(id(list5),id(list6))#内存地址不一样 print(list5,list6)#因为copy是浅拷贝 所以list6被改变,list5也会随之改变 list7 = [8,8,9,456,8,[8,946,8]] list8 = copy.deepcopy(list7) list8[-1][1] = 888 print(id(list7),id(list8))#内存地址不一样 print(list7,list8)#因为copy是深拷贝 所以list6被改变,list5也会随之改变
对于对象中的元素,深拷贝都会重新生成一份(有特殊情况,下面会说明),而不是简单对原始元素的内存地址的引用
对于非容器类型(如数字、字符串、和其他'原子'类型的对象)没有被拷贝一说
如果元祖变量只包含原子类型对象,则不能深拷贝,看下面的例子
转载于:https://www.cnblogs.com/arrow-kejin/p/8972047.html
python对象的深复制与浅复制相关推荐
- python列表浅复制_Python列表的深复制和浅复制示例详解
一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码: l1 = [5, 4, 3, 2, 1] # 用 ...
- python list 深复制_Python列表的深复制和浅复制示例详解
免费资源网,https://freexyz.cn/ 一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码 ...
- php对象当参数传递 php深复制和浅复制
把对象当参数传递给方法,在方法里改过对象后,影响到外面的对象 因为对象是引用传递过去的 class Book {public $name;public function __construct($n ...
- C#中的深复制和浅复制(在C#中克隆对象)
C#中的深复制和浅复制(在C#中克隆对象) 转载于:https://www.cnblogs.com/dalovess/p/7002947.html
- iOS 集合的深复制与浅复制
2019独角兽企业重金招聘Python工程师标准>>> 概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对 ...
- C++学习基础七——深复制与浅复制
C++学习基础七--深复制与浅复制 一.深复制与浅复制基本知识 深复制和浅复制,又称为深拷贝和浅拷贝. 深复制和浅复制的区别如下图1所示: 图1 图1表示的是,定义一个类CDemo,包含int a和c ...
- 深复制VS浅复制(MemberwiseClone方法介绍)
MemberwiseClone方法,属于命名空间System,存在于程序集 mscorlib.dll中.返回值是System.Object.其含义是:创建一个当前object对象的浅表副本. MSDN ...
- Objective-C 深复制和浅复制与NSCopying协议
1.简单复制只能实现浅拷贝:指针赋值,使两个指针指向相同的一块内存空间,操作不安全. 2. Foundation类已经遵守了<NSCopying>和 <NSMutableCopyin ...
- IOS学习笔记十八(copy、mutableCopy、NSCopying、NSMutableCopy、深复制、浅复制)
1. copy.mutableCopy方法 copy方法返回对象的不可修改的副本 mutableCopy方法返回的对象可修改的副本 1).测试demo int main(int argc, char ...
- [C++]深复制与浅复制
深复制与浅复制 C++中,默认的复制构造函数只能实现浅复制. 浅复制指的是在对象复制前,只对对象中的数据成员进行简单的复制 大多数情况下"浅复制"已经能很好的工作了,但是当类的数据 ...
最新文章
- 如何防止google colab 掉线
- 简单汇编----输入密码判断正否
- python答案公众号_大学慕课用Python玩转数据答案查题公众号
- 用Python轻松开发数据库取数下载工具
- 从一个Android码农视角回顾2018GDD大会
- dropbox mac_如何在Windows或Mac上启动时阻止Dropbox打开
- java oca_OCA第5部分中的Java难题
- python为什么装不了pip_python自带pip用不了怎么办
- Google | 创造Youtube单次上线最高收益!解决推荐中的信息茧房困境
- java图片的导出,并压缩
- android双联动列表,Android Fragment实现列表和内容联动
- jQuery 学习-样式篇(一):如何引用 jQuery
- 基于Protues的Arduino学习笔记01-Arduino UNO实验板设计
- matlab绘图和python绘图
- 椭球体上某区域面积的求算,及该区域兰伯特投影与墨卡托投影到二维平面后面积对比...
- cad字体安装_史上最全CAD字体库,3000+种字体!没有人能安装全!
- 【转载】UMTS和GSM的架构
- 最全的大数据学习资料整理
- android 3d动画绘制,Iyan 3d app
- win10计算机打开一直读进度条,win10开机读条后黑屏怎么办_win10开机读条之后黑屏修复方法-win7之家...
热门文章
- HazeOver For Mac(管理窗口工具)
- 易用性强的数据库管理工具DBeaverEE v22.0.1
- System Toolkit for Mac(Mac系统维护工具)
- Infor 成功举办 Infor Next China
- 全局替换字体,开源库更方便!!! 1
- java语言的演化——读JavaOne ppt笔记
- 点击按钮对两个div的隐藏与显示进行切换
- 获取本机IP可区分系统可区分虚拟机和本机java程序跨平台
- JS写的简单的图片播放器
- Spark中sortByKey和sortBy对(key,value)数据分别 根据key和value排序