1.我在复制一个数组的时候,使用了如下的代码:
lee = [['a','b'],['a','c'],['c','b'],['c','a']]
lee_new = lee
最后,我一直得不到我想要的lee_new的结果。
花了许久的时间,我最后茅塞顿开想到了c++的浅复制与深复制,于是上网一搜:
果然如我所想,python的浅复制让你以为你生成了“两个数组”,而实际上你只生成了一个数组。
2.浅复制与深复制
2.1浅复制:
形如:
a = [1,2,3]
b = a
这种复制方式叫浅复制,而这种复制不会让你得到两个数组,他只会让数组名为a,和b的柄指向同一个内存,即你的内存中实际上只有一个数组,但是它被两个柄指向了。
2.2深复制:
import copy
a = [1,2,3,4]
b = copy.deepcopy(a)
这种复制方式叫深复制,这种复制方式会产生两个不同的数组a,和b,这样你实际上得到的是两个不同的数组。
扫描二维码关注公众号,回复:
13133546 查看本文章
![](/qrcode.jpg)
最后说一句,当你发现你对一个数组的操作导致另一个数组的值改变时,你就应该思考一下是不是使用了浅复制导致两个数组名指向了同一个数组。如果是这样,赶紧使用深复制吧。