列表引用拷贝拷贝,就拿硬盘来举个例子,例如:你朋友的硬盘里一些好康的东西,你可以通过复制粘贴的方式把它弄到你的电脑里边。
可以看到我下边把 l1 的值赋值给了 l2 ,但是修改 l1 的值之后 l2 也发生了变化。在python创建数据(l1)的时候,会在计算机存储中开辟一块新的空间用于存放数据,而之后(l2)进行的操作仅仅是调用、引用而已。
l1 = [1,2,3] l2 = l1 l1[0] = 'a' l1[-1] = ['a','b'] print(l1) <<<< ['a', 2, ['a', 'b']] print(l2) <<<< ['a', 2, ['a', 'b']]列表的浅拷贝
浅拷贝之后可以看到,我们在修改 l1 的值 l2 没有发生改变
l1 = [1,2,3] # 利用切片的方式来对列表进行浅拷贝 l2 = l1[:] l1[0] = 'a' print(l1) <<<< ['a', 2, 3] print(l2) <<<< [1, 2, 3]
但是浅拷贝就是相当于把整个父级目录拷贝下来而已,可以看到我在下边改变了 l1 内子列表的值,l2 也会发生改变
l1 = [1,2,3,['a','b']] l2 = l1[:] l1[0] = 'a' l1[-1][0] = 1 print(l1) <<<< ['a', 2, 3, [1, 'b']] print(l2) <<<< [1, 2, 3, [1, 'b']]列表的深拷贝
如果想要对列表进行深拷贝,需要用到python 的内置模块copy
import copy l1 = [1,2,3,['a','b']] # 可以看到利用copy进行拷贝之后,在修改l1 的值 l2 并没有发生变化。 l2 = copy.deepcopy(l1) l1[-1][0] = 1 print(l1) <<<< [1, 2, 3, [1, 'b']] print(l2) <<<< [1, 2, 3, ['a', 'b']]总结
对于深浅拷贝,这玩意其实不用记太多,了解就好了,如果以后忘记了怎么办,大家可以点下边的那个收藏按钮以备不时之需。



