얕은 복사와 깊은 복사의 개념과 차이점
객체를 복사하는 방법으로 얕은(Shallow) 복사와 깊은(Deep) 복사가 있습니다.
얕은 복사는 원본 또는 복사본 중 하나를 변경하면 다른 하나에도 영향을 미칩니다.
깊은 복사는 원본과 복사본이 완전히 독립적이므로, 원본 또는 복사본 중 하나를 변경하더라도 다른 하나에는 영향을 미치지 않습니다.
얕은 복사(Shallow Copy)
얕은 복사는 복사된 객체와 원본 객체가 내부 객체를 공유하게 됩니다.
얕은 복사 예시
# 리스트를 만듭니다
original = [1, 2, 3, [4, 5, 6]]
# 얕은 복사를 수행합니다. 이를 위해 list() 함수를 사용할 수 있습니다.
shallow_copied = list(original)
# 얕은 복사된 리스트의 중첩된 리스트를 변경합니다.
shallow_copied[3][0] = 99
# 결과 출력
print("Original:", original) # [1, 2, 3, [99, 5, 6]] 출력 : 원본 리스트도 변경됨
print("Shallow Copied:", shallow_copied) # [1, 2, 3, [99, 5, 6]] 출력
위 예시에서 shallow_copied 리스트의 중첩된 리스트를 변경하면, original 리스트도 변경됩니다.
깊은 복사(Deep Copy)
깊은 복사는 객체의 모든 수준에서 새로운 객체를 생성합니다. 복사된 객체는 원본 객체와 완전히 독립적이며, 원본 객체의 변경이 복사된 객체에 영향을 주지 않습니다.
깊은 복사 예시
import copy
original = [1, 2, 3, [4, 5, 6]]
deep_copied = copy.deepcopy(original)
deep_copied[3][0] = 99
# 결과 출력
print("Original:", original) # [1, 2, 3, [4, 5, 6]] 출력 : 원본 리스트는 변경되지 않음
print("Deep Copied:", deep_copied) # [1, 2, 3, [99, 5, 6]] 출력 : 복사된 리스트만 변경됨
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!