Python - 2차원 리스트(배열) 선언, 초기화

2차원 배열(리스트)를 선언하고 초기화하는 방법을 소개합니다.

1. 2차원 배열 선언 방법

2차원 리스트는 아래와 같이 선언할 수 있습니다.

[[a1,a2,a3,...,an],[b1,b2,b3,...,bn]]

예를 들어, 3열 2행으로 구성된 2차 배열은 아래와 같이 선언하고 내용을 출력할 수 있습니다.

arr = [[1, 2, 3], [4, 5, 6]]

print(arr)

Output:

[[1, 2, 3], [4, 5, 6]]

위의 2차배열을 그림으로 표현하면 다음과 같습니다. 2d array

2. List comprehension으로 2차 배열 선언

위에서 소개한 방법으로 큰 사이즈의 배열을 미리 선언하려면 매우 힘듭니다.

아래와 같이 List comprehension을 이용하면 원하는 크기의 배열을 생성할 수 있습니다. 배열의 초기 값은 0으로 설정하였습니다.

rows = 3
cols = 4

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

print(arr)

Output:

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

만약 배열을 생성하면서 초기화도 함께 하려면 아래와 같이 List comprehension에 특정 값으로 설정되도록 만들면 됩니다. (i + 1)*(j + 1)가 초기 값이 되는 코드입니다.

rows = 3
cols = 4

arr = [[(i + 1)*(j + 1) for j in range(cols)] for i in range(rows)]

print(arr)

Output:

[[1, 2, 3, 4], [2, 4, 6, 8], [3, 6, 9, 12]]

3. 2차원 배열 행(row) 추가

자료구조는 리스트이기 때문에, append()insert()로 행을 추가할 수 있습니다. append()는 리스트 마지막에 추가되고, insert()은 첫번째 인자로 추가하려는 행의 위치를 선택할 수 있습니다.

arr = [[1, 2, 3, 4], [5, 6, 7, 8]]

arr.append([9, 10, 11, 12])
print(arr)

arr.insert(0, [0, 0, 0, 0])
print(arr)

Output:

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]
[[0, 0, 0, 0], [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]

4. 2차원 배열의 행, 열의 값 변경

행과 열의 값을 변경할 수 있습니다. arr[index] = 처럼 행 전체를 변경할 수 있고, arr[i][j] = 처럼 요소 1개의 값만 변경할 수도 있습니다.

arr = [[1, 2, 3, 4], [5, 6, 7, 8]]

arr[0] = [9, 10, 11, 12]
print(arr)

arr[1][0] = 0
arr[1][3] = 0
print(arr)

Output:

[[9, 10, 11, 12], [5, 6, 7, 8]]
[[9, 10, 11, 12], [0, 6, 7, 0]]

4.1 for문으로 배열 전체 값 변경

아래와 같이 for문으로 모든 요소를 순회하면서 값을 변경할 수 있습니다.

arr = [[1, 2, 3, 4], [5, 6, 7, 8]]

for i in range(len(arr)):
    for j in range(len(arr[i])):
        arr[i][j] = (i + 1) * (j + 1)

print(arr)

Output:

[[1, 2, 3, 4], [2, 4, 6, 8]]

5. 2차원 배열 행(row) 삭제

del array[index]로 2차 배열에서 특정 Index의 행을 삭제할 수 있습니다.

arr = [[1, 2, 3, 4], [5, 6, 7, 8]]

del arr[0]

print(arr)

Output:

[[5, 6, 7, 8]]

6. 2차원 배열 길이

다음과 같이 행과 열의 길이를 계산할 수 있습니다. 열의 길이가 같다는 전제하에, 첫번째 row의 길이를 열의 길이로 계산하였습니다.

arr = [[1, 2, 3, 4], [5, 6, 7, 8]]

print(f"length of rows: {len(arr)}")
print(f"length of columns: {len(arr[0])}")

Output:

length of rows: 2
length of columns: 4
Loading script...
codechachaCopyright ©2019 codechacha