[python] 2차원 배열

·2023년 4월 29일

python

목록 보기
4/5

1차원 배열

1차원 배열을 선언할 때는 다음과 같이 선언할 수 있다.

rows = 5
arr = [0] * rows

# [0, 0, 0, 0, 0]

이렇게 입력하면 rows크기의 배열이 arr변수로 선언된다.


2차원 배열

  • row: 행 (가로줄)
  • column: 열 (세로줄)

    위는 row = 4, col = 3 인 경우이다.

❌잘못된 2차원 배열 선언

같은 방식으로 2차원 배열 선언

우선 1차원 배열하는 방식으로 2차원 배열도 해보자.

rows = 5 #가로
cols = 3 #세로
arr = [[0] * cols] * rows 

# [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

위의 방식 문제점

arr[0][0] = 1

# [[1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0], [1, 0, 0]]

나는 arr[0][0]값만 1로 변경하려고 했는데, 이와 같이 하면 모든 행의 [0]값이 1로 변경된다.
이렇게 되는 이유는, *연산자를 이용했기 때문이다. *연산자를 이용하여 배열을 선언하게 되면, 얕은 복사가 진행되기 때문에 배열 내의 요소들이 같은 객체를 가리키게 된다. (얕은 복사와 깊은 복사에 대해서는 추후 작성할 예정이다.)

⭕옳은 2차원 배열 선언

rows = 5
cols = 3
arr = [[0 for j in range(cols)] for i in range(rows)]

이같은 방식으로 for문을 이용하여 선언하면 된다.
선언 후 아까와 같이 첫번째 행의 첫번째 열을 1로 바꿔보자.

arr[0][0] = 1

# [[1, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

성공 !


출처
2차원 배열 선언하기

0개의 댓글