IT/Python
얕은 복사와 깊은 복사
우루사이
2023. 10. 30. 19:09
얕은 복사
- 간접적으로 변수의 주소를 복사하는 것.
- 다른 객체의 참조가 포함되어 있으면 참조만 복사.
- 원본 변경시, 복사 내용도 변경.
- 얕은 복사 예시
- 객체의 타입 변환
- 뮤터블 객체의 슬라이싱
- 이뮤터블 객체의 슬라이싱
- 이뮤터블 객체의 deepcopy()는 참조만 공유하기 때문에 얕은 복사
a = [1, 4, 2]
b = a
a[0] = 25
a # [25, 4, 2]
b # [25, 4, 2]
id(a), id(b) # 3512352, 3512352
# 함수
copy.copy(a)
깊은 복사
- 원본을 복사해 복사본을 따로 생성.
- 참조하고 있는 객체까지 모두 복사.
- 원본을 변경시, 복사본은 유지.
a = [3, 2, 1]
b = a[:]
# id(a) != id(b)
a[0] = 52
# a[0] != b[0]
# 함수
copy.deepcopy(a)