『python思考』关于列表的浅复制和深复制的理解
来源:互联网 发布:mac os 10.13更新内容 编辑:程序博客网 时间:2024/06/07 02:02
>>> mylist1 = [1, 2, 3, 4]>>> myl = mylist1>>> myl[1, 2, 3, 4]>>> mylist1[0] = 5>>> mylist1[5, 2, 3, 4]>>> myl[5, 2, 3, 4]
这个就是浅复制
浅复制仅仅只是复制了对对象的引用,即 mylist1 和 myl 指向的是同一个对象,所以如果改变了该对象的元素的话,则 mylist1 和 myl 所指向的对象都会改变,因为实际上就是同一个对象
>>> id(mylist1)202009976>>> id(myl)202009976可以看出两者指向的对象在内存中的地址是相同的,即是同一个对象
>>> import copy>>> mylist2 = [5, 6, 7, 8]>>> myl2 = copy.deepcopy(mylist2)>>> mylist2[0] = 9>>> mylist2[9, 6, 7, 8]>>> myl2[5, 6, 7, 8]这个就是深复制
>>> id(mylist2)200662512>>> id(myl2)202007336而深复制后的两个变量则指向的是两个不同的对象,可以把这两个对象理解为张得一模一样的双胞胎,虽然很像,但实际上是两个不同的人,所以其中一个人发生了改变(如受伤了)也不会影响到另一个人
>>> id(mylist3[0])30909144>>> id(myl3[0])30909144>>> id(mylist3[3])200634696>>> id(myl3[3])202008136>>> mylist3 = [1, "a", 3, [4, 5, 6], [[7, 8, 9]]]>>> myl3 = copy.deepcopy(mylist3)>>> id(mylist3[1])31110016>>> id(myl3[1])31110016但是如果 mylist3 和 myl3 的元素指向的是同一个 『不可变』 的对象时,则 他们指向的仍然是同一个对象, 如 1 和 "a"
0 0
- 『python思考』关于列表的浅复制和深复制的理解
- Python中"=“,浅复制和深复制的理解
- Python中浅复制和深复制的一点理解
- 关于浅复制和深复制的理解
- python的深复制和浅复制
- python列表的复制
- 由Map的复制问题引发对深复制和浅复制的思考
- 由Map的复制问题引发对深复制和浅复制的思考
- 关于Windows复制的思考
- Java深复制和浅复制的理解
- 深复制与浅复制的理解
- 关于python的复制
- python 里的深复制 和浅复制概念
- 【python】列表的复制问题
- python中的列表的复制
- 数组的浅复制和深复制
- 浅复制和深复制的区别?
- 浅复制和深复制的区别?
- 修改Intellij IDEA的Recent Projects
- Android 九宫格显示多图或 item
- iOS 笔记 (持续更新。。。)
- 第三周项目3 求集合并集
- 关于js 和jquery select的现象
- 『python思考』关于列表的浅复制和深复制的理解
- 【VisualStudio】VS打开文件错误(The porject is not supperted...)
- jQuery源码解析-----Deferred是什么?
- Android开发之如何保证Service不被杀掉
- 第4周项目1-建立单链表
- 新公司的东西一头雾水
- 字符串
- 【HDU5892 2016 ACM ICPC Asia Regional Shenyang Online A】【二维树状数组模板 区间修改】nn矩阵内子矩阵中各怪兽数量的奇偶性.cpp
- spring,struts2在普通类中获取session和request,及RequestContextHolder使用误区