g python list的深拷貝與淺拷貝

2021-08-15 20:35:28 字數 708 閱讀 1180

其實python對於深拷貝與淺拷貝的處理方式依然是很靈活的,甚至有乙個專門的工具包copy來做個事情

來看以下這組list的拷貝方法:

已知lista是乙個已經定義好了的list

listb=lista

注意,這個並不是乙個copy的過程,這裡lista與listb完全等同

以下提供一些copy方法,但注意是深copy還是淺copy:

定義:lista=[2,[4,5]]

listb=lista[:]

listb=list(lista)

listb=[i for i in lista]

import copy;listb=copy.copy(lista)

import copy;listb=copy.deepcopy(lista)

拷貝完畢後,再進行以下操作:

print lista,listb

五種拷貝方式之後的結果如下:

[2,[4,5,9]],[2,[4,5,9]]

[2,[4,5,9]],[2,[4,5,9]]

[2,[4,5,9]],[2,[4,5,9]]

[2,[4,5,9]],[2,[4,5,9]]

[2,[4,5]],[2,[4,5,9]]

參考:

淺拷貝 深拷貝

copy mutablecopy copy 不管是可變的,還是不可變的,結果都是不可變的 mutablecopy 不管是不可變的,還是可變的,結果都是可變的 nsmutablestring str nsmutablestring stringwithformat a nsarray arr1 str...

深拷貝 淺拷貝

c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...

淺拷貝 深拷貝

retain是建立乙個指標,引用物件計數加1。copy屬性表示兩個物件內容相同,新的物件retain為1 與舊有物件的引用計數無關,舊有物件沒有變化。copy減少物件對上下文的依賴。retain屬性表示兩個物件位址相同 建立乙個指標,指標拷貝 內容當然相同,這個物件的retain值 1也就是說,re...