본문 바로가기

언어/Python

[ 파이썬 / Python ] 리스트 복사하기 (얕은/깊은 복사)

반응형

파이썬에서 리스트를 복사하는 방법은 여러 가지가 있습니다.
각 방법은 특정 상황에 따라 적합할 수 있습니다.
다음은 리스트를 복사하는 몇 가지 주요 방법입니다:

1. 얕은 복사 (Shallow Copy)

1.1. 슬라이싱을 이용한 복사

슬라이싱을 사용하면 리스트의 얕은 복사를 만들 수 있습니다.

original_list = [1, 2, 3, 4, 5]
copied_list = original_list[:]
print(copied_list)  # [1, 2, 3, 4, 5]

1.2. list() 함수를 이용한 복사

list() 함수를 사용하여 리스트를 복사할 수 있습니다.

original_list = [1, 2, 3, 4, 5]
copied_list = list(original_list)
print(copied_list)  # [1, 2, 3, 4, 5]

1.3. copy 모듈의 copy() 메서드를 이용한 복사

copy 모듈의 copy() 메서드를 사용하여 리스트를 복사할 수 있습니다.

import copy
original_list = [1, 2, 3, 4, 5]
copied_list = copy.copy(original_list)
print(copied_list)  # [1, 2, 3, 4, 5]

2. 깊은 복사 (Deep Copy)

깊은 복사는 리스트 내의 모든 객체를 재귀적으로 복사합니다. 이는 리스트가 중첩된 구조일 때 특히 유용합니다.

2.1. copy 모듈의 deepcopy() 메서드를 이용한 복사

copy 모듈의 deepcopy() 메서드를 사용하여 깊은 복사를 할 수 있습니다.

import copy
original_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
deep_copied_list = copy.deepcopy(original_list)
print(deep_copied_list)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

3. 리스트 컴프리헨션을 이용한 복사

리스트 컴프리헨션을 사용하여 리스트를 복사할 수 있습니다. 이는 얕은 복사를 만듭니다.

original_list = [1, 2, 3, 4, 5]
copied_list = [item for item in original_list]
print(copied_list)  # [1, 2, 3, 4, 5]

4. copy() 메서드를 이용한 복사 (Python 3.3+)

Python 3.3부터 리스트 객체에 copy() 메서드가 추가되었습니다.

original_list = [1, 2, 3, 4, 5]
copied_list = original_list.copy()
print(copied_list)  # [1, 2, 3, 4, 5]

3. 요약

  • 얕은 복사: 슬라이싱([:]), list(), copy.copy(), 리스트 컴프리헨션, copy() 메서드
  • 깊은 복사: copy.deepcopy()

각 방법은 복사의 깊이에 따라 달라지며, 얕은 복사는 리스트의 상위 레벨 요소만 복사하는 반면, 깊은 복사는 모든 중첩된 요소까지 복사합니다.
사용자의 필요에 따라 적절한 방법을 선택하면 됩니다.

반응형