python append()與深拷貝、淺拷貝
深淺拷貝
在python中,對象指派實際上是對象的引用。當建立一個對象,然後把它賦給另一個變量的時候,python并沒有拷貝這個對象,而隻是拷貝了這個對象的引用。我們稱之為淺拷貝。
在python中,為了使當進行指派操作時,兩個變量互補影響,可以使用copy子產品中的deepcopy方法,稱之為深拷貝。
append()函數
當list類型的對象進行append操作時,實際上追加的是該對象的引用。
示例:
alist = []
num = [2]
alist.append( num )
id( num ) == id( alist[0] )
輸出: True
如上例所示,當num發生變化時(前提是
id(num)
不發生變化),alist的内容随之會發生變化。往往會帶來意想不到的後果,想避免這種情況,可以采用深拷貝解決:
alist.append( copy.deepcopy( num ) )
PS:
id()函數:傳回對象的唯一辨別,可以類比成該對象在記憶體中的位址。