python基礎-22深淺拷貝

一丶拷貝

若是l2是l1的拷貝對象,則l1內部的任何數據類型的元素變化,則l2內部的元素也會跟着改變,由於可變類型值變id不變。python

阿攀大白話:

原對象任何元素變化,拷貝對象隨之變化,這種現象爲拷貝.用=來實現.app

l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = l1

l1.append('g')
print(l1)

['a', 'b', 'c', ['d', 'e', 'f'], 'g']code

print(l2)

['a', 'b', 'c', ['d', 'e', 'f'], 'g']對象

二丶淺拷貝

若是l2是l1的淺拷貝對象,則l1內的不可變元素髮生了改變,l2不變;若是l1內的可變元素髮生了改變,則l2會跟着改變。class

阿攀大白話:

原對象不可變類型元素變化拷貝對象不變化,可是可變類型類型變化,拷貝對象也隨之改變,這種爲淺拷貝.用copy.copy()實現import

import copy

l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = copy.copy(l1)

l1.append('g')

print(l1)

['a', 'b', 'c', ['d', 'e', 'f'], 'g']數據類型

print(l2)

['a', 'b', 'c', ['d', 'e', 'f']]im

l1[3].append('g')

print(l1)

['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']數據

print(l2)

['a', 'b', 'c', ['d', 'e', 'f', 'g']]img

淺拷貝

三丶深拷貝

若是l2是l1的深拷貝對象,則l1內的不可變元素髮生了改變,l2不變;若是l1內的可變元素髮生了改變,l2也不會變,即l2永遠不會由於l1的變化而變化。

阿攀大白話:

原對象不管什麼類型的元素改變都不會影響拷貝類型的元素,這個就必然是一個深拷貝.用copy.deepcopy()實現

import copy

l1 = ['a', 'b', 'c', ['d', 'e', 'f']]
l2 = copy.deepcopy(l1)

l1.append('g')

print(l1)

['a', 'b', 'c', ['d', 'e', 'f'], 'g']

print(l2)

['a', 'b', 'c', ['d', 'e', 'f']]

l1[3].append('g')

print(l1)

['a', 'b', 'c', ['d', 'e', 'f', 'g'], 'g']

print(l2)

['a', 'b', 'c', ['d', 'e', 'f']]

深拷貝

相關文章
相關標籤/搜索