파이썬

[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