天天看點

python append()與深拷貝、淺拷貝

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()函數:傳回對象的唯一辨別,可以類比成該對象在記憶體中的位址。