2010-03-16 55 views
6

這是代碼:Python列表是不一樣的參考

L=[1,2] 

L is L[:] 

False 

爲什麼這是錯?

+0

試試這個,它可能是太精闢:'L [:]爲L [:]' – fortran 2010-03-16 11:39:16

+0

儲備'is'測試針對無或其他單身人士(如類或模塊)檢查,否則,你是最有可能對'=='測試感興趣(並且是的,我知道'1是1'通常在CPython世界中返回True,但這並不是一個好主意)。 – PaulMcG 2010-03-16 12:38:43

回答

14

L[:](切片符號)表示:將元素逐個製成整個列表的副本。

因此,您有兩個列表具有相同的內容,但是是獨立的實體。由於is評估對象標識,它返回False

L == L[:]返回True

6

有疑問時詢問id

>>> li = [1,2,4] 
>>> id(li) 
18686240 
>>> id(li[:]) 
18644144 
>>> 
2

getslice方法列表,這被稱爲當以L [],返回一個列表;所以,當用':'參數調用它時,它的行爲不同,它會返回一個與原始元素具有相同元素的新列表。

>>> id(L) 
>>> id(L[:]) 
>>> L[:] == L 
True 
>>> L[:] is L 
False