파이썬
[Python] 2차원 배열 선언
굴잉
2024. 5. 8. 13:18
728x90
파이썬에서 이차원 배열 선언
arr = [[0] * 5] * 5
# [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
그런데 배열의 값을 변경하려고 할 때 문제가 발생한다.
arr[0][0] = 1
# [[1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0], [1, 0, 0, 0, 0]]
Python에서 배열을 선언할때 * 연산자를 사용하면, 얕은 복사(shallow copy)가 진행된다.
즉, 배열 내의 요소들이 같은 객체를 가리키게 된다.
2차원 배열 for문 이용하여 선언하기
arr = [[0] * n for _ in range(n)]
arr[0][0] = 1
# [[1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
바꾸자 하는 값만 변경되었다.
728x90