对于各种编程语言,深浅拷贝总可以让初学者头疼不已 。而Python--这门十分受欢迎的语言也不例外 。下面,分享下自己对Python深浅拷贝的理解 。
- 浅复制后,两个变量同时变化
- 深复制后,两个变量独立
>>> x = 10>>> y = x>>> x, y10, 10>>> x = 0>>> print(x, y) 0, 10发现,y的值没有变化!!!也说明y = x 这个赋值操作并没有实现把x的地址赋值给y,而是创造了一个引用 。x,y的值是独立的,不会相互影响 。直接上图助你理解引用 。
文章插图
- 10赋值给x,10的引用给了x
- y=x,给10创造了一个引用别名
- x=0,0的引用给了x,从而不会影响y的值
>>>ls1 = [0,1,2]>>>ls2 = ls1>>>ls1.Append(-1)>>> ls1, ls2[0,1,2,-1],[0,1,2,-1]赋值后,两个变量是同时改变的 。这和单变量的不同 。
【浅谈Python深浅拷贝】可以这样理解,对于复杂数据结构的赋值,其实是数据结构地址的赋值,即ls1和ls2共享了这个list的地址,都指向这个数据结构 。所以,一个变化后,另一个也会变化 。类比说明下,假设黄山市和徽州市(徽州更好听)是同一个地方的名称,都指向同一个地点 。徽州市实现了小康,那黄山市肯定也是小康了 。
深复制那么,如何实现复杂数据结构的复制呢?使用Python的一个包:copy.
- copy.copy() 实现浅复制
- copy.deepcopy() 实现深复制
推荐阅读
- 浅谈泡普洱茶有哪些误区
- 浅谈传统泡茶法与古法泡茶
- 浅谈日用紫砂陶的实用功能
- 浅谈宜兴紫砂器
- 源码 用python一天爬取20万条企业信息
- 浏览器 1 秒变身 Python 编辑器
- 高效利用Python内置的数据结构
- 纯电 浅谈新能源汽车基础知识
- python 文本处理
- 用Python抢火车票的简单小程序