Python的複製、淺拷貝、深拷貝

Python的複製、淺拷貝、深拷貝

在python中,對象複製實際上是對象的引用。當創建一個對象,然後把它賦給另一個變量的時候,Python並沒有拷貝這個對象,而只是拷貝了這個對象的引用。

賦值

a = [1,2,3,4,5]
b = a
print(a, b)
>>>[1,2,3,4,5] 
>>>[1,2,3,4,5]
#改變a,b也跟着改變
a.append(5)
print(a, b)
>>>[1,2,3,4,5,5]
>>>[1,2,3,4,5,5]
#改變b,a也跟着改變
b.append(6)
print(a, b)
>>>[1,2,3,4,5,5,6]
>>>[1,2,3,4,5,5,6]

淺拷貝

淺拷貝對原對象進行修改後,拷貝後的對象不發生改變,但淺拷貝的子對象進行修改的話,拷貝後的對象會跟着發生改變。總結來講,淺拷貝之拷貝對象內容,不拷貝子對象

import copy
a = [1,2,3,4,5]
b = copy.copy(a)
print(a, b)
>>> [1,2,3,4,5] [1,2,3,4,5]
a.append(6)
print(a, b)
>>>[1,2,3,4,5,6] [1,2,3,4,5] #b不改變
#但當a存在子對象的時候
a = [1,2,3,[1]]
b = a
a[3].append(2)
print(a, b)
>>> a = [1,2,3,[1,2]]
>>> b = [1,2,3,[1,2]]

深拷貝

深拷貝就是拷貝對象及其子對象

import copy
a = [1,2,3,[1]]
b = copy.deepcopy(a)
a.append(5)
a[3].append(5)
print(a, b)
>>>[1,2,3,[1,5]] [1,2,3,[1]]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章