python深淺拷貝

深淺拷貝

a = [1,[2,3]]
b = a #直接賦值,就是完全引用,a,b共享
c = a[:] #淺拷貝,形成新的
d = list(a)
a[0] = "A"
print(id(a[0]),id(b[0]),id(c[0]),id(d[0])) #前兩個地址一樣,後兩個地址一樣

#複合結構對象
a = [1,[2,3]]
b = a
c = a[:] #淺拷貝,複雜元素,直接拿來用
d = list(a)
e = copy.deepcopy(a) #深拷貝
a[1][0] = "change"
print(id(a[1][0]),id(b[1][0]),id(c[1][0]),id(d[1][0]))

#深拷貝:打印id可知,全部形成新對象
#直接賦值 = 完全引用
#淺拷貝 = 簡單元素(不包含子元素)進行拷貝形成新對象,複雜元素(包含子元素)拿來引用,不生成新對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章