Python深浅拷贝
python
"""
python的高级特性 --深浅copy
1.copy方式
2.浅copy --只复制第一层,但内层共享地址
copy.copy()
3.深copy ---通过递归的形式,完全copy原对象
copy.deepcopy()
4.作用场景
深浅copy他们的核心区别是否使用递归进行copy
浅copy,只copy表面,内部共享内存地址
深copy,通过递归copy原对象,与原对象保持独立
无论深浅copy都适用于可变对象的更深层次的copy
"""
常见copy
python
#一.常见的copy方式
list1 = [1,2,3,4,5]
#1.切片
print(list1[:])
#2.内置函数copy()
print(list1.copy())
#.导入内置模块copy
import copy
print(copy.copy(list1))
深浅拷贝
python
#二.深浅copy
#1.创建二维列表
test_list1 = [[3,4],[6,7],[8,9]]
#2.测试浅拷贝
res = copy.copy(test_list1)
res[0][0] = 100
print(f"原列表test_list1:{test_list1}")
print(f"copy后的列表:{res}")
print(id(test_list1[0]))
print(id(res[0]))
#3.测试深拷贝
test_list2 = [[3,4],[6,7],[8,9]]
res = copy.deepcopy(test_list2)
print(f"原列表test_list2:{test_list1}")
print(f"copy后的列表:{res}")
print(id(test_list2[0]))
print(id(res[0]))
赋值和拷贝的区别
赋值:只是给变量起了一个新名字,两个变量指向内存中同一个对象(没有复制数据)。
浅拷贝(Shallow Copy):只复制最外层的对象,内部的子对象(如列表里的列表、字典里的列表)仍然是引用关系。
深拷贝(Deep Copy):完全复制原对象及其所有子对象,新对象和原对象在内存中完全独立,互不影响。
