** TIL at 220725
할당은 대입연산자 (=
)를 이용하는 방법이다.
리스트를 대입연산자를 이용해 다른 변수에 할당하여 값을 확인해보자.
original = [1, 2, 3]
copy = original
copy와 original은 값만 같은 다른 리스트일 것 같지만, 사실은
대입연산자를 통한 복사는 해당 객체에 대한 '객체 참조'를 복사하기 때문에
copy[0] = 'boo'
복사한 리스트의 값을 바꾸면 원본의 값까지 바뀌게 된다!
위에서 살펴 본 할당과 다르게 내용물을 다른 주소에 복사하여 원본 값에 영향을 주지 않는다.
original = [1,2,3]
copy = original[:]
2차원 리스트에서 리스트인 원소는 할당과 같이 객체 참조가 복사되어, 원본에 영향을 줄 수 있다.
originl = [1,2,[3,4]]
copy = original[:]
이럴 때는 깊은 복사를 사용해서 복사해야한다.!
2차원의 리스트까지 다른 주소로 값을 복사하여 원본에 영향을 주지 않는다.
import copy
original = [1,2,[3,4]]
copy = copy.deepcopy(original)