1. 程式人生 > >python list的append 函式

python list的append 函式

x = [1, 2, 3]
y = []
y.append(x) 
x.append(9)
y.append(x)
print(y)

期望結果是 [[1, 2, 3], [1, 2, 3, 9]]

實際的輸出結果是 [[1, 2, 3, 9], [1, 2, 3, 9]]

出現這種的原因是:

當list型別的物件進行append操作時,實際上追加的是該物件的引用。 

擴充套件的時候,並沒有進行拷貝,僅僅是作為了引用,稱作淺拷貝。

如果id(x),和 id(y[0]) 會發現它們的地址其實是一樣的。

如果想要得到預期的結果,需要進行深拷貝:

import copy
x = [1, 2, 3]
y = []
y.append(copy.deepcopy(x))
x.append(9)
y.append(copy.deepcopy(x))
print(y)
此時結果就是, [[1, 2, 3], [1, 2, 3, 9]]