2012-02-28 4 views
1

id(L)id(L[:])의 차이점과 관계에 대해 궁금합니다. 여기에서 L은 목록입니다.파이썬 목록 ID (L) 및 ID (L [:])

공식 문서는이 ID에 대한() 말한다 :

CPython의 구현 세부 사항이 메모리에서 개체의 주소입니다.

그러나 id(L)id(L[:])의 값이 다른 이유는 알 수 없습니다.

답변

7

L[:]은 목록의 사본을 생성합니다. 그것의 완전히 새로운 목록은 L과 같은 항목을 포함하고 있습니다. 결과적으로, 그것은 메모리의 다른 장소에 저장되고 다른 id를가집니다.

+0

중간에 'L [slice (None)]'과 같습니다. 그리고 그것은 얕은 사본입니다. – wim

+0

그래서, 만약 당신이'id (L [:])'를 실행했다하더라도, 인터프리터는리스트의 얕은 복사본을 생성하고 새로운 주소를 반환하고, id (L [:])'완료 되었습니까? 답장을 보내 주셔서 감사합니다 :) – taijirobot

+0

@ taijirobot, 그건 정확히 무슨 일이. –