copy与deepcopy异同点
copy与deepcopy都是python中复制对象的方法
相同点:
1.都用于创建对象的副本
2.对于可变对象(列表、字典等):会创建副本而不是引用原对象
3.对于不可变对象(整数、字符串等):copy与deepcopy使用效果类似,因为没有子对象需要复制
不同点:
1.对嵌套对象的处理不同:copy只复制最外层对象,而不会递归地复制嵌套对象;deepcopy会递归地复制整个对象,包括所有嵌套的对象
2.引用对象:对于嵌套对象,copy可能会导致原始对象和复制对象共享相同的嵌套对象;而deepcopy会为嵌套对象创建全新的副本,确保原始对象与复制对象的嵌套对象不共享引用。
import copy
#浅复制
list = [1, [2, 3], [4, 5]]
shallow_copy = copy.copy(list)
#深复制
deep_copy = copy.deepcopy(list)
#修改原始对象中的嵌套列表
list[1][0] = 'X'
print(list) #[1, ['X', 3], [4, 5]]
print(shallow_copy) #[1, ['X', 3], [4, 5]] (共享嵌套列表的引用)
print(deep_copy) #[1, [2, 3], [4, 5]] (独立的嵌套列表)