[26일차]얕은 복사(Shallow Copy) vs 깊은 복사(Deep Copy)

김준석·2024년 1월 1일

이전 글에서 copy() 함수를 다루는 중 얕은 복사, 깊은 복사를 언급했었다.

이 두 단어에 대해 자세하게 알아보자.


얕은 복사 (Shallow Copy)

  • 복사 대상이 변경되면 원본도 변경된다.
  • 변수명만 달라진 개념

얕은복사의 예시

a = [0,3,6,9]
b = a
del b[0]
del b[-1]
print(a)
print(b)

위의 코드를 통해 값이 어떤식으로 변환되는지 알아보자.

1,2 번째 줄을 실행한 결과이다.

a와 b가 동일한 list를 참조하고 있는 것을 확인할 수 있다.

즉, b라는 함수가 리스트에 연결된 길을 하나 더 추가해준 개념!

b에서 첫번째 인덱스와 마지막 인덱스를 삭제하는 코드를 작성하면 결국 연결된 list에서 삭제가 진행됨으로 a의 값도 변경 된다.

깊은 복사(Deep Copy)

  • 복사 대상과 원본이 각 각 다른 list로 저장됨.

깊은 복사의 예시

a = [0,3,6,9]
b = a.copy()
del b[0]
del b[-1]
print(a)
print(b)

위의 코드를 통해 값이 어떤식으로 변환되는지 알아보자.

1,2 번째 줄을 실행한 결과이다.

b 함수에서 a의 값을 copy() 함수를 통해 가져왔기 때문에

동일한 레퍼런스를 가지고 있지만, 다른 주소를 가지고 있다.

때문에 b에서 삭제를 진행해도 a의 list는 변함이 없다.

0개의 댓글