import copy l1 = [10,'a1',[110,111],'ds',] l2 = copy.copy(l1) #浅拷贝 print(l1) print(l2) l1[1] = 11 #改变L1的值 l1[2][0] = 1111 #改变l1内嵌列表的值 print(l1) print(l2) print(id(l1)) print(id(l2)) print(id(l1[2][0])) print(id(l2[2][0])) #[10, 'a1', [110, 111], 'ds'] #[10, 'a1', [110, 111], 'ds'] #通过下面的结果对比,发现浅拷贝对于内嵌多层数据类型的操作,如果多层数据类型值改变,浅拷贝的对象也会跟着改变 #[10, 11, [1111, 111], 'ds'] #[10, 'a1', [1111, 111], 'ds']
import copy l1 = [10,'a1',[110,111],'ds',] l2 = copy.deepcopy(l1) print(l1) print(l2) l1[1] = 11 #改变L1的值 l1[2][0] = 1111 #改变l1内层数据的值 print(l1) print(l2) print(id(l1)) print(id(l2)) print(id(l1[2][0])) print(id(l2[2][0])) #[10, 'a1', [110, 111], 'ds'] #[10, 'a1', [110, 111], 'ds'] #结合上面的例子进行对比发现,对于深层拷贝,内嵌多层的数据类型的值,被改变,不会影响到另一方拷贝或被拷贝的对象 #[10, 11, [1111, 111], 'ds'] #[10, 'a1', [110, 111], 'ds']