1. 程式人生 > >python中list的拷貝與numpy的array的拷貝

python中list的拷貝與numpy的array的拷貝

1.python中列表list的拷貝,會有什麼需要注意的呢?
這裡寫圖片描述

python變數名相當於標籤名。
list2=list1 ,直接賦值,實質上指向的是同一個記憶體值。任意一個變數list1(或list2)發生改變,都會影響另一個list2(或list1)。
eg:

>>> list1=[1,2,3,4,5,6]
>>> list2=list1
>>> list1[2]=88
>>> list1
[1, 2, 88, 4, 5, 6]
>>> list2
[1, 2, 88, 4, 5, 6]

而list3和list4是通過切片對list1的複製操作,分別指向了新的值。任意改變list3或list4的值,不會影響其他。

2.要使用ndarray型別的陣列,需要from numpy import* 引用工具包numpy。
而對ndarray型別的資料進行拷貝時,跟list型別有一點區別。
這裡寫圖片描述
陣列切片是原始陣列的檢視,這意味著資料不會被複制,檢視上的任何修改都會被直接反映到源陣列上.
array1,array2,array3,array4實際指向同一個記憶體值,任意修改其中的一個變數,其他變數值都會被修改。
若想要得到的是ndarray切片的一份副本而非檢視,就需要顯式的進行複製操作函式copy()。


eg:
array5=array1.copy() #對原始的array1的複製
array6=array1[1:4].copy() #對切片array1[1:4]的複製
那麼,修改array5或array6,就不會影響array1。