2010-03-16 4 views
6

동일한 참조하지?파이썬 목록이 코드입니다

+0

너무 통찰력이 될 수있다,이 시도 :'L의 [이 :] L의이다 :]' – fortran

+0

준비'테스트 is' 없음 또는 (클래스 나 모듈 같은) 다른 싱글에 대해 확인하기 위해, 그렇지 않으면, 당신은 대부분'=='테스트에 관심이있을 것입니다. (그렇습니다. '1은 1입니다.') 일반적으로 CPython 세계에서 True를 반환하지만 좋은 생각은 아닙니다. – PaulMcG

답변

14

L[:] (조각 표기법) 의미 : 요소별로 전체 목록의 복사본을 만듭니다.

따라서 동일한 콘텐츠를 가지고 있지만 별도의 항목 인 두 개의 목록이 있습니다. is은 개체 ID를 평가하기 때문에 False을 반환합니다.

L == L[:]True을 반환합니다. 의심 id을 요청

6

)

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

당신이 L []로, 목록을 반환 할 때 호출되는리스트의 getslice 방법; 따라서 ':'인수로 호출하면 다르게 동작하지 않으므로 원래 요소와 동일한 요소가있는 새 목록을 반환합니다.

>>> id(L) 
>>> id(L[:]) 
>>> L[:] == L 
True 
>>> L[:] is L 
False 
관련 문제