list 슬라이싱 질문합니다.

조회수 404회

파이썬에서 변수에

a = 123
b = a
a += 1
print(a, b)

이렇게 실행한다고 b가 a따라서 값이 변하지 않는데

왜 리스트에서는

a = [1, 2, 3]
b = a
a.append(4)
print(a, b)

이렇게 실행했을 b까지 같이 변화하나요? 파이썬의 문법인가요?

만약 맞다면 딕셔너리도 마찬가지인것 같던데 리스트와 딕셔너리 외에 또 이렇게 따라오는 형태가 있는지 궁금합니다.

  • 숫자나 튜플같은 자료형은 변경 불가능한 자료형이라 값을 바꾸려면 변수에 재할당만 가능하지만, 리스트는 append 등의 메소드로 그 자체의 값을 바꿀 수 있습니다. 따라서 list 타입의 변수 a 와 b 에 객체의 메모리 주소를 알아내는 함수인 id 를 사용해보면 결과가 같은 것을 확인할 수 있지요. (id 값은 실행할 때마다 달라집니다.) 플라잉폭스 2021.1.23 09:06
  • 리스트 같은 자료구조는 파이썬에서 데이터를 공유합니다. C언어에서 Pointer 개념으로 이해하시면 도움이 될 듯 합니다. dbwodlf3 2021.1.25 19:27

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)