关于python的copy()与deepcopy()之间的区别
关于python的copy()与deepcopy()之间的区别
copy为浅复制,不会产生一个独立的对象单独存在,如list中套着list的情况,当改变子list中的一个或多个元素,copy的内容也会一起变,而deepcopy(深复制)则不会改变。
import copy
list1 = [1,2,3]
list2 = [1,2,list1]
list3 = list2.copy()
list4 = copy.deepcopy(list2)
print(list3,list4)
list1[2] = 9
list1[1] = 8
list1[0] = 7
print(list3,list4)
list1 = [4,5,6] #整个改变不会改变
print(list3,list4)
输出结果如下:
[1, 2, [1, 2, 3]] [1, 2, [1, 2, 3]]
[1, 2, [7, 8, 9]] [1, 2, [1, 2, 3]]
[1, 2, [7, 8, 9]] [1, 2, [1, 2, 3]]
当可变数据类型(list/dict)中包含的子元素为可变数据类型,如[1,2,[3,4,5]],当改变如[3,4,5]这样的子元素列表中的部分元素时,copy()的镜像效果生效,使用deepcopy()不会受到影响。