【Python】Python 直接赋值、浅拷贝和深度拷贝解析
来源:互联网 发布:python kiss原则 编辑:程序博客网 时间:2024/05/22 09:15
- 直接赋值:其实就是对象的引用(别名)。
- 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
- 深拷贝(deepcopy):copy模块的deepcopy方法,完全拷贝了父对象及其子对象。
实例:
a = {1:[1,2,3]}b = a.copy()print("a:",a)print("b:",b)a[1].append(4)print("a:",a)print("b:",b)
实例输出:
a: {1: [1, 2, 3]}b: {1: [1, 2, 3]}a: {1: [1, 2, 3, 4]}b: {1: [1, 2, 3, 4]}
深度拷贝需要引入copy
模块:
实例:
import copya = {1:[1,2,3]}b = copy.deepcopy(a)print("a:",a)print("b:",b)a[1].append(4)print("a:",a)print("b:",b)
实例输出:
a: {1: [1, 2, 3]}b: {1: [1, 2, 3]}a: {1: [1, 2, 3, 4]}b: {1: [1, 2, 3]}
解析:
1、b = a:
赋值引用,a
和b
都指向同一个对象。
2、b = a.copy()
: 浅拷贝, a
和b
是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。
3、b = copy.deepcopy(a)
: 深度拷贝,a
和b
完全拷贝了父对象及其子对象,两者是完全独立的。
更多实例
以下实例是使用copy
模块的copy.copy
( 浅拷贝 )和(copy.deepcopy
):
import copya = [1, 2, 3, 4, ['a', 'b']]b = ac = a.copy()d = copy.deepcopy(a)a.append(5)a[4].append('c')print ("a:",a)print ("b:",b)print ("c:",c)print ("d:",d)
以上实例执行输出结果为:
a: [1, 2, 3, 4, ['a', 'b', 'c'], 5]b: [1, 2, 3, 4, ['a', 'b', 'c'], 5]c: [1, 2, 3, 4, ['a', 'b', 'c']]d: [1, 2, 3, 4, ['a', 'b']]
阅读全文
0 0
- 【Python】Python 直接赋值、浅拷贝和深度拷贝解析
- Python 直接赋值、浅拷贝和深度拷贝解析
- Python 直接赋值、浅拷贝和深度拷贝解析
- Python 直接赋值、浅拷贝和深度拷贝解析
- python的赋值、浅拷贝和深拷贝
- python的浅拷贝,深拷贝和赋值
- Python对象赋值、浅拷贝和深拷贝
- python的赋值、浅拷贝和深拷贝
- Python中的赋值,浅拷贝和深拷贝的区别
- python的对象赋值、浅拷贝和深拷贝
- python赋值和深浅拷贝
- python中的赋值、浅拷贝、深拷贝
- python 赋值、浅拷贝与深拷贝
- python赋值,浅拷贝及深拷贝
- Python赋值、浅拷贝、深拷贝
- python赋值/拷贝问题
- Python学习笔记(九)—Python中的赋值、浅拷贝和深拷贝(含图)
- python数组的赋值和拷贝
- Date small example
- json:在js中的使用
- EditText右侧小图标点击事件
- 在ARM HI3531 linux上优化FAAC1.28运行速度
- Android EspressoUI自动化
- 【Python】Python 直接赋值、浅拷贝和深度拷贝解析
- SourceTree的使用
- Jquery fileDownload执行成功回调函数不执行的问题
- Retrofit2.0+Rxjava2 相关的文章
- 智能交通是建设智慧城市的第一步!
- JavaWeb文件上传和下载
- Hive的配置项详解
- StringBuffer的字符串操作
- StackOverflowError栈满--无线递归与OutOfMemoryError内存溢出