• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

리스트를 가지고 연산했을 때 id 값에 대해 궁금한 것이 있습니다.

20.04.21 13:51 작성 조회수 87

0

튜플은 불변형이기에

리스트와 달리 재할당할 때마다 id 값이 바뀐다는 것은 이해했습니다.

그런데

a = [1,2,3]

print(id(a))

a *= 2

print(a, id(a))

a = a * 2

print(a, id(a))

했을 때 첫 번째 a의 id와 두 번째 a의 id 값은 같은데

세 번째 a의 id 값만 다릅니다.

[1,2,3]인 a의 id와 a *= 2 한 a의 id는 동일하고

a = a*2 했을 때의 id만 다르다는 의미인데

왜 그런가요? a = a* 2나 a *= 2나 둘 다 재할당하는 것인데

id값이 다른 이유를 모르겠네요. 감사합니다.

답변 1

답변을 작성해보세요.

1

안녕하세요.

a = a + 2 , a *= 2

전자의 경우에는 a라는 변수를 재선언해서 할당하는 것이기 때문에 id값이 변경되서 출력됩니다.

후자는 현재 변수에 할당이므로 동일한 id값이 출력됩니다.

감사합니다.