Python【深拷贝、浅拷贝】的区别
深拷贝:拷贝的程度深,自己开辟了一块新内存,把拷贝内容全部复制进去;
浅拷贝:拷贝的程度浅,只拷贝原数据的首地址,然后通过原数据的首地址,去获取内容;
优点和缺点对比:
深拷贝:改变拷贝后的内容不影响原数据内容,但是深拷贝耗时长,且占用内存空间;
浅拷贝:其实是把副本的地址指向原数据地址,修改副本内容会影响到原数据内容。但是浅拷贝耗时短,占用内存空间少;
示例:浅拷贝
import copy
list_old = [10,20,30,40,[50,60]]
list_new = copy.copy(list_old) #浅拷贝
list_old[-1][0] = 168
print(list_old,id(list_old[-1]))
print(list_new,id(list_new[-1])) #浅拷贝改变了list_old的子列表,list_new的子列表也会跟着变
# 输出:
# [10, 20, 30, 40, [168, 60]] 19031752
# [10, 20, 30, 40, [168, 60]] 19031752
示例:深拷贝
import copy
list_old = [10,20,30,40,[50,60]]
list_new = copy.deepcopy(list_old) #深拷贝
list_old[-1][0] = 168
print(list_old,id(list_old[-1]))
print(list_new,id(list_new[-1])) #深拷贝,列表和子列表都是不同的列表
# 输出:
# [10, 20, 30, 40, [168, 60]] 31418056
# [10, 20, 30, 40, [50, 60]] 60339144