arr = [0] * 5 # [0, 0, 0, 0, 0]
위 예시와 같이 Python에서는 배열을 * 연산으로 확장할 수 있다.
이 기능은 위와 같은 1차원 배열에서는 별 문제 없이 동작하나 2차원 배열 이상 확장했을 경우에는 아래와 같은 케이스를 만날 수 있다.
arr = [[0] * 3] * 3
# [[0, 0, 0][0, 0, 0][0, 0, 0]]
arr[0][0] = 1
# [[1, 0, 0][1, 0, 0][1, 0, 0]]
값 변경 시 Index의 참조가 정상적으로 이루어지지 않고 있다.
공식 문서에서는 위 예제와 같은 방식으로 List를 생성할 경우 하나의 배열의 Reference를 사용하여 다른 배열을 생성하므로 위와 같은 케이스가 발생하는 것이라고 설명하고 있다.
🙏 참조
'Languages' 카테고리의 다른 글
[HTML] Semantic tag (0) | 2023.08.22 |
---|---|
[JavaScript] Or와 And 연산자 단축 평가 논리 계산법 (0) | 2023.07.02 |
[JavaScript] 정규표현식의 전역 플래그와 .test() (0) | 2023.07.02 |
[JavaScript] Template literal & Tagged template (0) | 2023.07.02 |
[JavaScript] 정규표현식 (RegExp) (0) | 2023.07.02 |