얕은 복사(shallow copy)와 깊은 복사(deep copy)

송용진·2023년 8월 9일
0

알고리즘

목록 보기
158/173

파이썬에서 리스트 복사에는 두 가지 방법이 있습니다:
얕은 복사(shallow copy)와 깊은 복사(deep copy)입니다.

얕은 복사(Shallow Copy):
얕은 복사는 원본 리스트의 객체에 대한 참조를 그대로 가져오는 방식입니다.
원본 리스트와 복사본 리스트는 서로 다른 영역의 메모리를 사용하지만,
리스트 내부의 각 요소는 동일한 객체를 참조하는 상태가 됩니다.
이렇게 되면 원본 리스트와 복사본 리스트 중 하나의 데이터를 변경하면
다른 리스트의 데이터도 함께 변경됩니다.
얕은 복사를 위해 다음 방법을 사용할 수 있습니다:

리스트 슬라이싱 ([:])

original_list = [1, 2, [3, 4]]
copied_list = original_list[:]
copy 모듈의 copy 함수 사용
import copy
original_list = [1, 2, [3, 4]]
copied_list = copy.copy(original_list)

깊은 복사(Deep Copy):
깊은 복사는 원본 리스트와 복사본 리스트가 완전히 독립된 상태가 되게끔
구성 요소들을 재귀적으로 복사하는 방식입니다.
복사된 리스트의 요소가 원본 리스트의 요소에 대해 독립된 객체를 참조하므로,
원본과 복사본 중 하나의 데이터를 변경해도 다른 하나는 영향을 받지 않습니다.
깊은 복사를 위해 다음 방법을 사용할 수 있습니다:

copy 모듈의 deepcopy 함수 사용

import copy
original_list = [1, 2, [3, 4]]
copied_list = copy.deepcopy(original_list)

요약하면, 얕은 복사는본 리스트의 참조만 복사하고
데이터 변경에 취약한 반면,
깊은 복사는 리스트의 원소를 완전히 독립적으로 복사하여
원본과 복사본이 나름의 상태를 가지게 됩니다.

profile
백엔드 개발자

0개의 댓글