2013-05-26 49 views
3

有這樣的代碼:切片分配modifes原始列表

a = [1, 2, 3, 4, 5] 
a[:] = [] # and now a is also empty 

聲明a[:]創建列表a,因爲我讀的副本,因此,如果空單[]被分配到副本,那麼爲什麼原來的對象也被修改?

+0

切片分配!=切片。這是一個功能,而不是一個錯誤。 :-) –

回答

5

x = a[:]使得x包含相同值的新列表作爲a

a[:] = x使得現有列表a包含相同的值作爲x

當其切換的equals側表達式的行爲變化。

4

聲明a[:]因爲我讀

除非你不讀書,你寫的創建列表a的副本。切片分配的工作方式不同,即用切片替換切片。