Python_深浅拷贝
深浅拷贝
‘copy’和'='的区别:copy会开辟一个新的空间,而‘=’不会。
浅copy只会copy第一层,再里边的就进行共享了。
需要记住的是copy之后记住的是内存寻址地址,而浅copy时如果copy中有列表、字典等,记住的内存寻址是这个列表、字典的地址,也就是指向,当修改列表、字典中的东西时,记录的内存寻址没有发生改变,所以就会出现浅copy所描述的这种情况。
短暂感受:
# 修改字符串的时候没有发生变化 s_1 = [[1,2], 'mu', 'linux'] s_2 = s_1.copy() s_2[1] = 'wj' print(s_1) print(s_2) # 修改列表的时候发生了变化,证明s_1和s_2是有联系的 s_1 = [[1,2], 'mu', 'linux'] s_2 = s_1.copy() s_2[0][1] = 3 print(s_1) print(s_2)
深浅拷贝混合使用:
import copy a = ['mu', 123, [6000,5000]] b = copy.copy(a) b[0] = 'lei' b[1] = 456 b[2][1] -= 2000 print(a) print(b) c = copy.deepcopy(a) # 此处深copy时a[2][1]已经是3000了 c[0] = 'cao' c[1] = 789 c[2][1] -= 1000 print(c) print(a) print(b)