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

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

hot3.png

二,深浅copy

1,先看赋值运算。

l1 = [1,2,3,['barry','alex']]
l2 = l1

l1[0] = 111

print(l1)  # [111, 2, 3, ['barry', 'alex']]
print(l2)  # [111, 2, 3, ['barry', 'alex']]

l1[3][0] = 'wusir'

print(l1)  # [111, 2, 3, ['wusir', 'alex']]
print(l2)  # [111, 2, 3, ['wusir', 'alex']]

 

对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

2,浅拷贝copy。

l1 = [1,2,3,['barry','alex']]

l2 = l1.copy()

print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2380296895816
print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2380296895048

l1[1] = 222

print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2593038941128
print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2593038941896

 

l1[3][0] = 'wusir'
print(l1,id(l1[3]))  # [1, 2, 3, ['wusir', 'alex']] 1732315659016
print(l2,id(l2[3]))  # [1, 2, 3, ['wusir', 'alex']] 1732315659016

 

对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

3,深拷贝deepcopy。

import copy
l1 = [1,2,3,['barry','alex']]
l2 = copy.deepcopy(l1)

print(l1,id(l1))  # [1, 2, 3, ['barry', 'alex']] 2915377167816

print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048

l1[1] = 222

print(l1,id(l1))  # [1, 222, 3, ['barry', 'alex']] 2915377167816
print(l2,id(l2))  # [1, 2, 3, ['barry', 'alex']] 2915377167048

l1[3][0] = 'wusir'

print(l1,id(l1[3]))  # [1, 222, 3, ['wusir', 'alex']] 2915377167240
print(l2,id(l2[3]))  # [1, 2, 3, ['barry', 'alex']] 2915377167304

 

对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

 

转载于:https://my.oschina.net/u/3657436/blog/1614955

你可能感兴趣的文章
java运算符 与(&)、非(~)、或(|)、异或(^)
查看>>
jdbc的小warning
查看>>
ReactOS:基于Windows的开源操作系统
查看>>
在 Linux 中调试 C 程序的福音——gdb
查看>>
这些年一起学过的Linux
查看>>
Linux环境PHP7.0安装
查看>>
浏览器缓存机制
查看>>
Date、System、Calendar获取当前时间毫秒
查看>>
JS中的类型检测总结
查看>>
vue小demo0
查看>>
QQ邮箱无法收到系统邮件的问题处理
查看>>
iPhone X 网页导航概念
查看>>
python脚本监控程序问题&解决
查看>>
C++ 入门教程(开发文档)
查看>>
UCloud可支撑单可用区320,000服务器的数据中心网络系统设计
查看>>
测试网络rinkeby外文资料
查看>>
php 非常有用的高级函数PATH_SEPARATOR常量和set_include_path
查看>>
android studio 3.0 入坑需知
查看>>
java线程--打印错误堆栈信息
查看>>
你都用过世界地图中哪些数据中心
查看>>