코딩테스트/Python 개념

[Python] 리스트 복사 copy.deepcopy( )

박소민 2023. 3. 30. 15:38
깊은 복사 copy.deepcopy( 리스트 )
: 복사한 값 수정해도 기존 리스트 변경되지 않음
  • 2차원 배열 복사시에는 무조건 deepcopy 사용해야함
import copy

list_A = ["ABC",["DEF","GHI"]]

list_B = copy.deepcopy(list_A)

list_B[1][0] = ["GHI"]

print(list_A, list_B)
#결과 ['ABC', ['DEF', 'GHI']] ['ABC', [['GHI'], 'GHI']]

 

https://black-hair.tistory.com/49

 

슬라이싱 이용한 복사 list[:]
  • 1차원 배열에서는 깊은 복사처럼 사용되지만,
  • 2차원 배열일 때 리스트 내부 리스트가 얕은 복사 상태 (내부적으로 보면 얕은 복사)

arr1 [3] 부분이 [4, 5, 6, [2, 4, 8]]
arr2[3] = [4, 5, 6, [2, 4, 8], 22] 
바로 저 [2, 4, 8] 리스트인데요. 이 부분의 주소를 출력해보면
두 내부 리스트가 동일한 곳을 가리키고 있는 것을 볼 수 있다. -> 얕은 복사