记录一下python中的浅拷贝copy和深拷贝deepcopy
例题如下:
import copy
ls = [1, 2, [3, 4], 5, 6]
ls1 = ls.copy()
ls2 = ls
ls3 = copy.deepcopy(ls)
ls[2][1] = 0
ls.pop(1)
ls.append([7, 8])
print(ls1) #--------慙1慖
print(ls2) #--------慙2慖
print(ls3) #--------慙3慖
那么输出如下
我们分开来看
ls1
第一个ls1=ls.copy(),第一个是浅拷贝,对于浅拷贝,它只受修改值的影响,而不受对于列表append和pop方法的影响,所以只有对ls[2][1]的修改,append和pop并不会影响ls1的值
ls2
第二个ls2是直接复制ls2=ls,由于 ls2 只是 ls 的一个别名,所以对 ls 的所有修改都会反映在 ls2 上。因此,ls2 的输出将是 [1, [3, 0], 5, 6, [7, 8]]
ls3
第三个ls3.deepcopy()是深拷贝,所以在创建 ls3 时 ls 的状态被复制了,之后对 ls 的修改不会影响 ls3。因此,ls3 的输出将是 [1, 2, [3, 4], 5, 6]