작성
·
53
0
현재는
a = [1,2,3,4,5,6]
b = a[:3] + a[3:]
이경우에 id(a) id(b)값 다른것같은데
로직이 바뀐건가요?
문자열로 선언한것만 같네요
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. BH J님께서 질문 주신 내용에 답변 드리겠습니다.
파이썬에서 리스트 a
를 a[:3] + a[3:]
로 나누어 새로운 리스트 b
를 생성할 경우, b
는 a
의 일부 또는 전체를 그대로 복사한 새로운 객체가 됩니다. 이 때문에 id(a)
와 id(b)
가 서로 다르게 나올 수밖에 없습니다. 이는 리스트의 경우이며, 파이썬에서 문자열이나 숫자 등, 변경 불가능한(immutable) 타입의 경우 내부적으로 메모리를 절약하기 위해 문자열 interning을 사용하게 되어 동일한 내용의 문자열은 동일한 객체에 매핑됩니다. 그래서 문자열의 경우는 a
와 b
가 같은 id()
를 가질 수 있습니다.
관련하여 다음의 게시물이 도움이 될 수 있습니다:
이미지나 코드 샘플을 통해 더 명확히 이해하고 싶으시다면, 제공된 코드와 출력 결과를 확인하시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.