Posts mutable, immutable 변수
Post
Cancel

mutable, immutable 변수

파이썬의 변수는 mutable한 변수와 immutable한 변수로 나눌 수 있다.

mutable

값이 변하는 변수

예를 들어, List, Dictionary가 있다.

immutable

값이 변하지 않는 변수

예를 들어, Number, String, Tuple가 있다.

mutable한 변수를 어떻게 복사할까

1 shallow copy
1
2
3
4
5
6
x = [1, 2, 3]
y = x
x.append(4)

print(x) # [1, 2, 3, 4]
print(y) # [1, 2, 3, 4]

y = x처럼 x를 복사하면 얕은 복사(shallow copy)를 하게 된다.

2 슬라이싱
1
2
3
4
5
6
x = [1, 2, 3]
y = x[:]
x.append(4)

print(x) # [1, 2, 3, 4]
print(y) # [1, 2, 3]

y = x[:]처럼 복사하면 깊은 복사(deep copy)를 하게 된다.

리스트 안에 리스트가 있는 경우에는 내부 리스트까지 깊은 복사를 하지 않기 때문에 아래의 방법을 사용해야 한다.

3 copy 이용하기
1
2
3
4
5
6
7
import copy
x = [1, 2, 3]
y = copy.deepcopy(x)
x.append(4)

print(x) # [1, 2, 3, 4]
print(y) # [1, 2, 3]

copy.deepcopy()를 사용하여 깊은 복사(deep copy)를 할 수 있다.

This post is licensed under CC BY 4.0 by the author.