Python深淺拷貝

深淺拷貝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)#['我愛你', '中國', '親愛的母親', ['我爲你流淚', '我爲你自豪']]

 

相關文章
相關標籤/搜索