深淺拷貝app
首先來個準備知識:對象
list1 = ['我愛你', '中國', '親愛的母親']
list2 = list1#列表,進行賦值操做,其實是引用內存地址的賦值。內存中此時只有一個列表,兩個變量指向一個列表
list2.append('我爲你自豪')#對其中一個進行操做,兩個都跟着邊。
print(list2)#['我愛你', '中國', '親愛的母親', '我爲你自豪']
print(list1)#['我愛你', '中國', '親愛的母親', '我爲你自豪']blog
淺拷貝copy 建立對象內存
list1 = ['我愛你', '中國', '親愛的母親']
list2 = list1.copy() # list2 和list1 不是一個對象了
# lst2 = list1[:] # 切片會產生新的對象
list1.append("親愛的母親")
print(list1)#['我愛你', '中國', '親愛的母親', '親愛的母親']
print(list2)#['我愛你', '中國', '親愛的母親']
注意:切片操做會產生新的對象。因此list1 = list2[:],獲得的結果和list1.copy()同樣。import
list1 = ['我愛你', '中國', '親愛的母親', ['我爲你流淚', '我爲你自豪']]
list2 = list1.copy()
list1[3].append("我愛你中國")
print(list1)#['我愛你', '中國', '親愛的母親', ['我爲你流淚', '我爲你自豪', '我愛你中國']]
print(list2)#['我愛你', '中國', '親愛的母親', ['我爲你流淚', '我爲你自豪', '我愛你中國']]
深拷貝變量
import copy
list1 = ['我愛你', '中國', '親愛的母親', ['我爲你流淚', '我爲你自豪']]
list2 = copy.deepcopy(list1) # 把list1扔進去進行深度拷貝 , 包括內部的全部內容進行拷貝
list1[3].append("我愛你中國")
print(list1)#['我愛你', '中國', '親愛的母親', ['我爲你流淚', '我爲你自豪', '我愛你中國']]
print(list2)#['我愛你', '中國', '親愛的母親', ['我爲你流淚', '我爲你自豪']]