列表的深拷贝与浅拷贝
lst0 = [0, 1, 3, 3] lst1 = [0, 1, 3, 3] lst3 = [0, 1, 2, 3, [11, 12, 13, 14]] print(lst0 == lst1 ) #True 比较两个列表的值 print(lst0 is lst1) #False 比较两个列表的id lst1 = lst0 #lst0 lst1同时指向同一个列表,所以改变任何一个另一个也随之改变 lst1[2] = 10 print(lst1) #[0, 1, 10, 3] print(lst0) #[0, 1, 10, 3] lst1 = lst0.copy() lst1[2] = 30 print(lst1) #[0, 1, 30, 3] print(lst0) #[0, 1, 10, 3] #浅拷贝 lst4 = lst3.copy() lst4[2] = 20 print(lst4) #[0, 1, 20, 3, [11, 12, 13, 14]] print(lst3) #[0, 1, 2, 3, [11, 12, 13, 14]] lst4[4][1] = 26 #当内部为复杂结构时,只会将其地址拷贝过来,因此在修改lst4中的元素[11, 12, 13, 14]时,lst3也会相应改变 print(lst4) #[0, 1, 20, 3, [11, 26, 13, 14]] print(lst3) #[0, 1, 2, 3, [11, 26, 13, 14]] #深拷贝 import copy lst4 = copy.deepcopy(lst3) lst4[4][1] = 33 print(lst4) #[0, 1, 2, 3, [11, 33, 13, 14]] print(lst3) #[0, 1, 2, 3, [11, 26, 13, 14]]