Python浅拷贝与深拷贝
来源:互联网 发布:音乐软件下载 编辑:程序博客网 时间:2024/06/15 16:52
Python中,对象的赋值,拷贝(深/浅拷贝)之间是有差异的,如果使用的时候不注意,就可能产生意外的结果。
注意:浅拷贝和深拷贝的不同仅仅是对组合对象来说,所谓的组合对象就是包含了其它对象的对象,如列表,类实例。而对于数字、字符串以及其它“原子”类型,没有拷贝一说,产生的都是原对象的引用。
copy对于一个复杂对象的子对象并不会完全复制,什么是复杂对象的子对象呢?就比如序列里的嵌套序列,字典里的嵌套序列等都是复杂对象的子对象。对于子对象,python会把它当作一个公共镜像存储起来,所有对他的复制都被当成一个引用,所以说当其中一个引用将镜像改变了之后另一个引用使用镜像的时候镜像已经被改变了。
所以说看这里的origin[2],也就是 [3, 4] 这个 list。根据 shallow copy 的定义,在 cop1[2] 指向的是同一个 list [3, 4]。那么,如果这里我们改变了这个 list,就会导致 origin 和 cop1 同时改变。这就是为什么上边 origin[2][0] = “hey!” 之后,cop1 也随之变成了 [1, 2, [‘hey!’, 4]]。
deepcopy的时候会将复杂对象的每一层复制一个单独的个体出来。
这时候的 origin[2] 和 cop2[2] 虽然值都等于 [3, 4],但已经不是同一个 list了。即我们寻常意义上的复制。
阅读全文
0 0
- Python的浅拷贝与深拷贝
- python/c++ 深拷贝与浅拷贝
- Python 深拷贝与浅拷贝
- Python中的浅拷贝与深拷贝
- python 浅拷贝与深拷贝
- Python的深拷贝与浅拷贝
- Python中深拷贝与浅拷贝
- python append()与深拷贝、浅拷贝
- python浅拷贝与深拷贝
- Python 的深拷贝与浅拷贝
- python中的深拷贝与浅拷贝
- Python:深拷贝与浅拷贝
- python 赋值、浅拷贝与深拷贝
- [Python]浅拷贝与深拷贝
- Python浅拷贝与深拷贝
- Python中的浅拷贝与深拷贝
- Python的深拷贝与浅拷贝
- python-深拷贝与浅拷贝
- 用神经网络续写《权力的游戏》,这个脑洞有点大(附完整小说下载)
- 太上感应篇0036
- 022:第二章 导数的定义
- Leetcode526. 回溯法之应用(一):统计数组排列数目
- 太上感应篇0037
- Python浅拷贝与深拷贝
- 特征选择的基本方法概述
- Ubuntu基本命令
- 太上感应篇0038
- 五阿哥钢铁电商资深运维工程师手把手教你这样玩企业组网
- C++构造函数与析构函数
- 太上感应篇0039
- mybatis中mapper的用法以及一些注意事项
- C++ STL开发温习与总结(五): 5.C++标准库简介