알고리즘/그외중요한것들

리스트 얕은 복사 후 기존 값을 다른 것으로 대체하면

위대한루루 2020. 4. 23. 14:00
a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
a = b  # 얕은 복사(주소 같음)
print("a의 주소:", id(a))
print("b의 주소:", id(b))

b = [100, 100, 100, 100]  # b를 새로운 객체로 대체하면

print("a:", a)
print("a의 주소:", id(a))  # a의 값에는 영향이 없고,
print("b의 주소:", id(b))  # b는[100, 100, 100, 100] 이라는 새로운 객체를 가리킴


# 평범한 shallow copy를 보여주는 예
a = b
b[0] = 0
print(a)

결과

a = b를 하면, a -> b -> [리스트]가 아니라

a -> [리스트] <- b 가 되므로, 

b에게 다른 값을 넣어도

a -> [리스트]

b -> [다른리스트]

가 되는 거다.