강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

BH J님의 프로필 이미지
BH J

작성한 질문수

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

리스트(3-2)

현재는 a = [1,2,3,4,5,6] b = a[:3] + a[3:]이경우에 id(a) id(b)값 다른것같은데 로직이 바뀐건가요?

작성

·

53

0

 현재는
a = [1,2,3,4,5,6]
b = a[:3] + a[3:]
이경우에 id(a) id(b)값 다른것같은데
로직이 바뀐건가요?

문자열로 선언한것만 같네요

image.png

 

답변 2

0

좋은사람님의 프로필 이미지
좋은사람
지식공유자

네 안녕하세요.

AI 인턴 답변대로 새로운 리스트를 생성 후 + 연산 작업을 하기 때문에 ID 값이 다르게 출력되요!

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. BH J님께서 질문 주신 내용에 답변 드리겠습니다.

파이썬에서 리스트 aa[:3] + a[3:]로 나누어 새로운 리스트 b를 생성할 경우, ba의 일부 또는 전체를 그대로 복사한 새로운 객체가 됩니다. 이 때문에 id(a)id(b)가 서로 다르게 나올 수밖에 없습니다. 이는 리스트의 경우이며, 파이썬에서 문자열이나 숫자 등, 변경 불가능한(immutable) 타입의 경우 내부적으로 메모리를 절약하기 위해 문자열 interning을 사용하게 되어 동일한 내용의 문자열은 동일한 객체에 매핑됩니다. 그래서 문자열의 경우는 ab가 같은 id()를 가질 수 있습니다.

관련하여 다음의 게시물이 도움이 될 수 있습니다:

이미지나 코드 샘플을 통해 더 명확히 이해하고 싶으시다면, 제공된 코드와 출력 결과를 확인하시기 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

BH J님의 프로필 이미지
BH J

작성한 질문수

질문하기