반응형
shallow copy
값이 할당되는 것이 아니라 같은 메모리 주소를 바라봄
- list
a = [1, 2, 3]
b = a # shallow copy
b[0] = 7
print(a) #[7, 2, 3)
아래와 같이 슬라이싱을 통해 할당하면 새로운 id가 부여됨
id(a)와 id(b)는 다르지만 내부 객체 id(a[0])과 id(b[0])은 같은 주소를 바라봄
a = [[1, 2], [3, 4]]
b = a[:]
그렇기 때문에 재할당하는 경우에는 문제가 생기지 않지만, a[1] 값을 변경하면 b[1] 값도 따라서 변경됨
a[0] = [8, 9]
print(b) # [[1, 2], [3, 4]]
a[1].append(4)
print(b) #[[1, 2], [3, 4, 4]]
*copy 모듈의 copy 메서드 또한 얕은 복사임
deep copy
깊은 복사는 내부 객체들까지 모두 새롭게 copy 되는 것
import copy
a = [1, 2, 3, 4]
b = copy.deepcopy(a)
a.append(5)
print(b) # [1, 2, 3, 4]
반응형
'programming > python' 카테고리의 다른 글
requests.get (0) | 2023.09.22 |
---|---|
a-z 출력 (0) | 2023.08.08 |
비트연산자 (0) | 2023.08.05 |
우선순위 큐 - PriorityQueue, heapq (0) | 2023.08.03 |
[Error] 런타임 에러 (RecursionError) (0) | 2023.07.28 |