본문 바로가기

파이썬

[Python] list, set, dict 컨테이너

반응형

알고리즘을 하면서 주의할 점이 list, set, dict 등의 컨테이너 타입을 쓸 때이다.

컨테이너 타입은 일반적으로 복사를 하게 되면 주소값이 들어가 변경하게 되면 복사된 값까지 그대로 옮겨가게 되기 때문이다.

s = set()
s.add(1)
ss = s
s.add(2)
print(ss)
# 결과 {1,2}

l = [tuple()]*17
l[0] = (1,2)
ll = l
l[0] = (1,3)
print(ll)
# [(1, 3), (), (), (), (), (), (), (), (), (), (), (), (), (), (), (), ()]

그러므로 복사를 하기 위해선 copy에 있는 deepcopy를 사용 혹은 리스트 컴프리헨션을 사용하여 복사해줘야 한다.

'파이썬' 카테고리의 다른 글

[Python] for else  (0) 2020.10.06
Decorator  (0) 2020.09.20
First class function, Closure  (0) 2020.09.20
char 형 -> int 형 변환  (0) 2020.09.19