# 파이썬에서 객체를 복사하는 두 가지 방법
- 얕은 복사(shallow copy)
- 깊은 복사(deep copy)
# 얕은 복사(shallow copy)
- 얕은 복사는 새로운 객체를 생성하지만 원본의 요소에 대해서는 새로운 객체를 생성하지 않는다. 대신, 원본에 있는 객체에 대한 참조를 복사한다.
- copy 모듈이나 list.copy(), dict.copy()와 같은 객체별 메서드를 사용하여 생성할 수 있다.
- 전체 객체 계층 구조를 복제하지 않기 때문에 깊은 복사에 비해 빠르고 적은 메모리를 사용다.
import copy
original_list = [1, [2, 3], [4, 5]]
shallow_copied_list = copy.copy(original_list)
# 얕은 복사 리스트의 수정이 원본 리스트에 영향을 미침
shallow_copied_list[1][0] = 99
print(original_list) # [1, [99, 3], [4, 5]]
print(shallow_copied_list) # [1, [99, 3], [4, 5]]
# 깊은 복사(deep copy)
- 깊은 복사는 새로운 객체를 생성하고 원본 객체 내부의 객체를 재귀적으로 복사한다. 즉, 모든 중첩된 객체에 대해 완전히 독립적인 복사본을 생성한다.
- copy 모듈을 사용하여 생성할 수 있다.
- 얕은 복사에 비해 메모리와 시간이 더 많이 소요될 수 있다.
import copy
original_list = [1, [2, 3], [4, 5]]
deep_copied_list = copy.deepcopy(original_list)
# 깊은 복사 리스트의 수정이 원본 리스트에 영향을 미치지 않음
deep_copied_list[1][0] = 99
print(original_list) # [1, [2, 3], [4, 5]]
print(deep_copied_list) # [1, [99, 3], [4, 5]]
728x90
'Python' 카테고리의 다른 글
[Python] if 문 (0) | 2024.01.12 |
---|---|
[Python] 딕셔너리(Dictionary) (0) | 2024.01.12 |
[Python] 문자열 포매팅(string formatting) (2) | 2024.01.11 |
[Python] t 검정(t-test) (0) | 2024.01.11 |
[Python] 클래스 (2) | 2024.01.10 |