深浅拷贝
‘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] = 3print(s_1)print(s_2)
深浅拷贝混合使用:
import copya = ['mu', 123, [6000,5000]]b = copy.copy(a)b[0] = 'lei'b[1] = 456b[2][1] -= 2000print(a)print(b)c = copy.deepcopy(a) # 此处深copy时a[2][1]已经是3000了c[0] = 'cao'c[1] = 789c[2][1] -= 1000print(c)print(a)print(b)