기술(Tech, IT)/파이썬(Python)

[Python] Two-Dimensional Array(2차원 배열)

Daniel803 2022. 10. 7. 13:54

 매번 파이썬 2차원 배열 선언이 헷갈린다. 2차원 배열 선언은 아래와 같고, Shallow Copy(얕은 복사)를 주의해야한다.

 

우선 Shallow Copy를 고려하지 않은 일반적인 2차원 배열은 아래와 같이 선언한다.

Array = [[0 for column in range(9)] for row in range(9)]

혹은 아래와 같이 선언할 수 도 있다.

Array = [[0] * 9] for row in range(9)]

 

다음은 Shallow Copy를 적용한 2차원 배열 선언이다.

Array = [[0] * 9 * 9]

 위와 같이 2차원 배열을 선언할 경우, [0] * 9라는 배열을 그대로 복사해 생성하는 것으로 Array[0][0]의 값을 변경할 경우 Array[1][0]부터 Array[8][0]까지 모든 값이 한번에 변경된다. 이는 각 행의 첫 번째 요소가 모두 같은 곳을 가리키기 때문이다. 

 가령 위와 같이 모든 요소의 값이 0인 9 * 9의 크기를 갖는 2차원 배열에서 Array[0][0] = 1을 선언하게 될 경우 아래와 같이 변하게 된다.

결과:

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 0 0

 

참고

- https://infinitt.tistory.com/106

 

파이썬 (Python) 2중 리스트, 2차원 배열 선언 및 출력

https://infinitt.tistory.com/17 파이썬(Python) 기초 (6) 데이터 타입(Data Type) - 리스트 (list) 와 튜플 (tuple) 그리고 관련 함수(sort reverse insert remove pop append extend 등.. ) 리스트와 튜플은 모..

infinitt.tistory.com

- https://velog.io/@sjy5386/Python-2%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4-%EC%84%A0%EC%96%B8%ED%95%98%EA%B8%B0