본문 바로가기
CS/Python

[Python] 파이썬 리스트, 2차원 리스트 깊은 복사(deepcopy) 하는 법

by Code Song 2024. 7. 26.

 

Shallow Copy

a = [1,2,3,4,5]
b = a
b[0] = 6

print(a) # 6,2,3,4,5
print(b) # 6,2,3,4,5

 

여러분도 이런 상황이 있으셨을겁니다.

어떤 리스트의 원소를 바꿨는데 다른 리스트의 원소까지 바뀐 경험이요.

이것은 " b=a " 에서 얕은 카피가 일어났기 때문입니다.

 

이런 상황은 mutable한 객체인 list, set, dict에서 일어나고

immutable한 객체인 tuple에서는 일어나지않습니다.

 

1차원 리스트

1차원의 리스트는 슬라이싱(slicing)을 이용하면 됩니다.

a = [1,2,3,4,5]
b = a[:]
b[0] = 6

print(a) # 1,2,3,4,5
print(b) # 6,2,3,4,5

 

 

2차원 리스트

2차원의 리스트도 슬라이싱과 리스트 컴프리헨션을 이용하면 됩니다.

a = [[1,2,3],[4,5,6],[7,8,9]
b = [ arr[:] for arr in a ]

 

 

댓글