1. 程式人生 > >python 基礎之淺拷貝與深拷貝

python 基礎之淺拷貝與深拷貝

png 分享 字符串 span () nbsp img 有一個 bsp

淺拷貝與深拷貝
#1.普通賦值:
1:

a = 15
b = a
a = 16
print(b)
#2:
lst1 = [1,2,3]
lst2 = lst1
lst1.append(4)
print(lst2)
#這個情況是lst1lst2地址相同,元素相同


#2.淺拷貝

#只拷貝以及所有元素
#:

#法一:直接.copy()拷貝

lst1 = [1,2,3]
#lst2 = lst1
lst2 = lst1.copy()
print(lst2)
lst1.append(4)
print(lst2)
print(lst1)

#法二:使用模塊進行淺拷貝
import copy
#copy 模塊下面有一個同名的copy方法

lst1 = [1,2,3]
lst2 = copy.copy(lst1)
lst1.append(5)
print(lst2)

#3.深拷貝 將所有級別的元素統統獨立拷貝一份
"每一級的所有元素統統拷貝一份,不沿用以前的數據"
#import引入copy復制模塊 deepcopy深拷貝 copy淺拷貝
import copy #copy deepcopy()
lstvar = [1,2,3,[4,5,6]]
lstvar2 = copy.deepcopy(lstvar)
lstvar[-1].append(7)
print(lstvar2)
print(lstvar)
dictvar = {‘a‘:[1,2],"b":{"c":123,"d":[7,8,9]}}
dict2 = copy.deepcopy(dictvar)
dictvar["b"]["d"].extend("ab")
print(dict2)

lstvar = [1,2,3,[4,5]]
lst2 = copy.copy(lstvar)
print(lst2)
lstvar.append(66)
print(lst2)

#在淺拷貝中把字符串這樣列表的當著一級容器數據
lstvar = [1,2,3,"45"]
lstvar2 = copy.copy(lstvar)
# lstvar[-1] = 1234 #
# print(lstvar)
# print(lstvar2)

#賦值與淺拷貝與深拷貝內存關系

技術分享圖片

淺拷貝只有一級數據時獨立的,二級的數據時相同的地址的

python 基礎之淺拷貝與深拷貝