본문 바로가기
Languages

[Python] List * 연산으로 2차원 배열 이상 확장했을 때 Index 참조 문제

by roses16 2023. 7. 4.
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를 사용하여 다른 배열을 생성하므로 위와 같은 케이스가 발생하는 것이라고 설명하고 있다.


🙏 참조