copy 모듈의 deepcopy는 리스트가 아닌 객체를 copy할때 유용한 것으로 알고있다.
하지만 오늘 들은 얘기는 조금 충격적이였다.
바로 2차원 배열에는 슬라이싱을 사용시 값이 제대로 복사가 되지 않는다는 점..!
a = [ [1,2], [3,4] ]
b = a[:]
배열 a는 위와 같이 슬라이싱을 하면 가장 밖에 있는 배열만 복사하고 안 쪽에 있는 배열들은 복사가 되지 않는다.
그 이유는 어렵지 않게 추측할 수 있다.
배열안에 배열을 넣기위해 주소값을 두 번 참조했기 때문이다.
그러므로 슬라이싱을 이용해 제대로 copy하려면 다음과 같이 사용해야한다.
b = [ ]
for i in range(len(a)):
b.append(i[:])
매우 귀찮은 과정이므로 그냥 deepcopy를 사용하도록 하자.
'Algorithm' 카테고리의 다른 글
python) 정렬에 lambda함수 활용하기 (0) | 2022.05.23 |
---|---|
프로그래머스) 괄호 변환 (0) | 2022.05.22 |
LeetCode) subsets (0) | 2022.05.21 |
백준) 단지번호붙이기 (0) | 2022.05.19 |
LeetCode) lengthOfLongestSubstring (0) | 2022.05.18 |