python copy, deepcopy
id값들은 다 달라용
a =[5, 4, 3, 2, 1]
b = a.copy()
print(id(a), id(b)) #a, b의 id값
a.sort()
print(a)
print(b)
print(a)
136706586227072 136706586388480
[1, 2, 3, 4, 5][5, 4, 3, 2, 1]
[1, 2, 3, 4, 5]
따라서 동일한 id 값을 갖게 된다
또한, 값을 변경하게 되면 참조하는 리스트의 값들도 변경되게됨
import copy
a = [[1, 2], [3, 4]]
b = a.copy() # 얕은 복사
print(id(a), id(b)) # 서로 다른 id 출력
# 바깥 리스트의 id는 다르지만, 내부 리스트는 같은 객체를 참조
print(id(a[0]), id(b[0])) # 동일한 id 출력 (내부 리스트는 같은 객체)
print(id(a[1]), id(b[1])) # 동일한 id 출력
# a의 내부 리스트 변경
a[0][0] = 99
print(a) # [[99, 2], [3, 4]]
print(b) # [[99, 2], [3, 4]] --> b도 영향을 받음
import copy
a = [5, 4, 3, 2, 1]
b = copy.deepcopy(a) # 깊은 복사 참조값, 메모리값을 다르게 복사하는것들을 참조한다고 함
print(id(a), id(b))
a.sort()
print(a)
print(b)
136706601295296 136707210895872
[1, 2, 3, 4, 5][5, 4, 3, 2, 1]
여기까지는 얕은 복사와 비슷해보임
import copy
a = [[1, 2], [3, 4]]
b = copy.deepcopy(a) # 깊은 복사
print(id(a), id(b)) # 서로 다른 id 출력
# 바깥 리스트와 내부 리스트 모두 다른 객체로 복사됨
print(id(a[0]), id(b[0])) # 다른 id 출력
print(id(a[1]), id(b[1])) # 다른 id 출력
# a의 내부 리스트 변경
a[0][0] = 99
print(a) # [[99, 2], [3, 4]]
print(b) # [[1, 2], [3, 4]] --> b는 영향을 받지 않음
136706588920768 136707209328192
136706586383040 136706586389504
136707209396096 136706586257664
[[99, 2], [3, 4]]
[[1, 2], [3, 4]]