Seongtae Kim
githubinstagrammail

Python: Mutable, Immutable

Mutable

id 값이 바뀌지 않으면서 값 변경이 가능한 객체

  • list
  • set
  • dict
a = [1, 2, 3]
b = a
b[0] = 4
print(b)  # [4, 2, 3]
print(a)  # [4, 2, 3]

Immutable

id 값이 바뀌지 않으면서 값 변경이 불가능한 객체

  • bool
  • int
  • float
  • tuple
  • str
  • frozenset

copy

원본 데이터의 값만 복사하기 위한 방법으로 2가지가 있다.

Shallow copy

  • 슬라이싱을 사용한 방법
a = [1, 2, 3]
b = a[:]
  • copy 모듈 사용 방법
a = [1, 2, 3]
b = copy.copy(a)

이렇게 하면 새로운 id 값을 가지도록 만들어주는데, 리스트 안의 리스트는 id가 변경되지 않는다. 예를 들어, 2차원 리스트가 있다.

[[1, 2], [3, 4]]

이 경우, 아래의 Deep copy를 사용하면 된다.

Deep copy

  • copy 모듈 사용 방법
a = [1, 2, 3]
b = copy.deepcopy(a)
back