博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 深copy和浅copy
阅读量:6471 次
发布时间:2019-06-23

本文共 860 字,大约阅读时间需要 2 分钟。

  hot3.png

浅copy 所谓“浅拷贝”,是指创建一个新的对象,其内容是原对象中元素的引用。(拷贝组合对象,不拷贝子对象)个人理解,关键是根据子元素的指向地址是否一样来判断

注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。 常见的浅拷贝有:切片操作、工厂函数、对象的copy()方法、copy模块中的copy函数。 深copy 所谓“深拷贝”,是指创建一个新的对象,然后递归的拷贝原对象所包含的子对象。深拷贝出来的对象与原对象没有任何关联。 注意如果子元素是不可变对象时,深copy对象的子元素所对应的指向地址会和原对象子元素一样 但是相互独立的, 下面的这个例子中子元素是可变的对象

import copy a = [[1, 2],[5, 6], [8, 9]] b = copy.copy(a) # 浅拷贝得到b c = copy.deepcopy(a) # 深拷贝得到c 深拷贝只有一种方式:copy模块中的deepcopy函数。 import copy a = [1, 2, 3] b = copy.deepcopy(a) print(id(a), id(b)) 140601785065840 140601785066200 总结:

1、赋值:简单地拷贝对象的引用,两个对象的id相同。 2、浅拷贝:创建一个新的组合对象,这个新对象与原对象共享内存中的子对象。 3、深拷贝:创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。

浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。

转载于:https://my.oschina.net/u/1775013/blog/739927

你可能感兴趣的文章
python操作mysql数据库实现增删改查
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映
查看>>
生活杂事--度过十一中秋
查看>>
Pyrex也许是一个好东西
查看>>
Java内部类总结
查看>>
WINFORM WPF字体颜色相互转换
查看>>
能力不是仅靠原始积累(三)
查看>>
实战:使用终端服务网关访问终端服务
查看>>
彻底学会使用epoll(一)——ET模式实现分析
查看>>
路由器的密码恢复
查看>>
【Android 基础】Android中全屏或者取消标题栏
查看>>
Xilinx 常用模块汇总(verilog)【03】
查看>>
脱离标准文档流(2)---定位
查看>>
IO流之字符流
查看>>
集合异常之List接口
查看>>
Softmax回归
查看>>
紫书 习题11-11 UVa 1644 (并查集)
查看>>
App工程结构搭建:几种常见Android代码架构分析
查看>>