python 深淺拷貝

2021-08-08 15:12:57 字數 765 閱讀 9126

建立乙個寬度為3,高度為4的陣列

>>> mylist =[[0] * 3] * 4

[ [0,0,0],

[0,0,0],

[0,0,0],

[0,0,0] ]

但是當操作mylist[0][1] = 1時,發現整個第二列都被賦值,變成

[[0,1,0], 

[0,1,0],

[0,1,0],

[0,1,0]]

list * n—>n shallow copies of list concatenated, n個list的淺拷貝的連線

>>> lists =  * 3

>>> lists

[, , ]

>>> lists

[[3], [3], [3]]

是乙個含有乙個空列表元素的列表,所以*3表示3個指向這個空列表元素的引用,修改任何

乙個元素都會改變整個列表:

所以需要用另外一種方式進行建立多維陣列,以免淺拷貝:

>>> lists = [ for i in range(3)]

>>> lists

[[3], [5], [7]]

之前的二維陣列建立方式為:

>>> mylist = [([0] * 3) for i in range(4)]

python 深淺拷貝案例 python 深淺拷貝

深淺拷貝 對於 數字 和 字串 而言,賦值 淺拷貝和深拷貝無意義,因為其永遠指向同乙個記憶體位址 import copy a1 22255 a2 22255 print id a1 id a2 3428240 3428240 對於字典 元祖 列表 而言,進行賦值 淺拷貝和深拷貝時,其記憶體位址的變化...

python深淺拷貝

python 深淺拷貝 shallow copy 和 deep copy 對於乙個列表,列表裡面可以再放入乙個列表 1 若想複製這乙個列表,使用列表的普通的copy 方法,只能拷貝出列表裡表層的元素,而列表裡的列表卻無法拷貝,只能指向前乙個列表.修改拷貝出的列表裡列表裡的元素,原來的列表會發生改變....

python 深淺拷貝

coding utf 8 import copy 在python中物件的賦值其實就是物件的引用。當建立乙個物件,把它賦值給另乙個變數的時候,python並沒有拷貝這個物件,只是拷貝了這個物件的引用而已。淺拷貝 拷貝了最外圍的物件本身,內部的元素都只是拷貝了乙個引用而已。也就是,把物件複製一遍,但是該...