之前以為python中的賦值是賦值,事實告訴我這只是淺拷貝,只是指針(或者引用)的賦值,即兩者引用(指向)的內存還是同一個,只有深拷貝才能完全把內存空間里的值再創建一份然后放到一個新地址里供新的變量引用,類比c++的深淺拷貝。
import copy a=[1,2,3,[4,5,6]] b=a #賦值 c=copy.copy(a) #shallow copy d=copy.deepcopy(a) #Deep copy
使用is關鍵字判斷兩個變量是否指向同一個內存空間。
如果想使用深拷貝就調用copy庫,一般的賦值即使是自定義的對象也是淺拷貝。
python中也有數組,並不是list
# Array[]:相同類型元素的序列 from array import array a1=array('h',[1,2,3]) memv=memoryview(a1)#內存視圖 len(memv) memv[0]=55 a1 dir(a1)#array相關操作
這里可以看到可以用數組名字直接操作內存中的內容。(利用視圖,其實應當是找地址。)
tuple不能改變元素的值,但是可以增減對應元素的值。
set用{}儲存不重復的值。