深拷貝 淺拷貝

2021-09-22 01:41:58 字數 930 閱讀 1417

目錄

1.直接賦值b = a

2.淺拷貝  b = copy.copy(a)

3.深拷貝 b = copy.deepcopy(a)

在python中賦值語句總是建立物件的引用值,而不是複製物件。因此,python變數更像是指標,而不是資料儲存區域。

整片文章拿列表a = [1,2,[3,4]]舉例。其實含有子物件[3,4]的。把a賦值/給b。

直接賦值將父類元素和子類元素的索引都賦值給另外乙個值,改變a和b任何乙個值另外乙個值都會被改變

淺拷貝是將父類的值賦值和子類的索引賦值給另外乙個值。索引改變a和b任何乙個值的父類元素另外乙個值不會被改變。

但是改變任何乙個值的子類元素,另外乙個將會被改變。

深拷貝是將父類和子類的值都賦值給另外乙個值,父類和子類的索引都沒有拷貝,索引改變a和b任何乙個值的父類和子類都不會影響另外乙個值。

#encoding=utf8

import numpy as np

import copy

a = [1,2,[3,4]]

b = a

c = copy.copy(a)

d = copy.deepcopy(a)

a[0] = 9

a[2][0] = 9

print(a,'='*5,b,'\n')

print(a,'='*5,c,'\n')

print(a,'='*5,d,'\n')

[9, 2, [9, 4]] ***** [9, 2, [9, 4]] 

[9, 2, [9, 4]] ***** [1, 2, [9, 4]] 

[9, 2, [9, 4]] ***** [1, 2, [3, 4]] 

淺拷貝 深拷貝

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...