본문 바로가기
카테고리 없음

파이썬에서 리스트 복사에 대한 조금 깊은 이해

by 뷰티풀스택 2023. 7. 4.
반응형

copy 키워드는 데이터 구조, 객체 또는 변수의 복사본을 생성하는 데 사용됩니다. 기본적으로 파이썬에서 변수를 할당하면 실제 객체의 참조가 할당됩니다. 따라서 원본 객체가 변경되면 복사본도 변경됩니다. 그러나 copy 키워드를 사용하여 복사본을 만들면, 원본 객체의 변경과는 독립적으로 복사본을 조작할 수 있습니다.

 

copy 모듈은 파이썬의 기본 모듈 중 하나이며, 다양한 복사 기능을 제공합니다. 이 모듈에는 얕은 복사와 깊은 복사의 두 가지 주요 함수가 있습니다.

 

1. 얕은 복사 (shallow copy): 얕은 복사는 복사본을 생성하면서 원본 객체의 일부 요소만 복사합니다. 이는 원본 객체와 복사본이 동일한 객체를 참조하게 되므로, 원본 객체의 변경이 복사본에 영향을 줄 수 있습니다. 얕은 복사는 copy() 함수를 사용하여 수행할 수 있습니다.

 

2. 깊은 복사 (deep copy): 깊은 복사는 복사본을 생성하면서 원본 객체의 모든 요소를 복사합니다. 이는 원본 객체와 복사본이 독립적인 객체를 참조하게 되므로, 원본 객체와 복사본이 상호작용하는 일이 없습니다. 깊은 복사는 deepcopy() 함수를 사용하여 수행할 수 있습니다.

 

다음은 copy 모듈을 사용하여 얕은 복사와 깊은 복사를 수행하는 예제 코드입니다:

 

import copy



# 얕은 복사 (shallow copy)

original_list = [1, 2, [3, 4]]

copied_list = copy.copy(original_list)



# 원본 리스트 변경

original_list[0] = 5



print(original_list)      # 출력: [5, 2, [3, 4]]

print(copied_list)        # 출력: [1, 2, [3, 4]]



# 깊은 복사 (deep copy)

original_list = [1, 2, [3, 4]]

copied_list = copy.deepcopy(original_list)



# 원본 리스트 변경

original_list[0] = 5

original_list[2][0] = 6



print(original_list)      # 출력: [5, 2, [6, 4]]

print(copied_list)        # 출력: [1, 2, [3, 4]]

 

위 예제에서 볼 수 있듯이, 얕은 복사는 원본 리스트의 변화가 복사본 리스트에도 영향을 주는 것을 확인할 수 있습니다. 반면에 깊은 복사는 원본 리스트의 변화와 복사본 리스트의 변화가 서로 독립적으로 다르게 유지됩니다.

 

자세한 내용은 파이썬 공식 문서의 copy 모듈 섹션을 참조하시기 바랍니다.

 

파이썬 공식 문서 링크: [copy 모듈 문서](https://docs.python.org/3/library/copy.html)

반응형

댓글