21.3 반복문으로 2 차원 리스트 만들기

이번에는 for 반복문을 사용하여 2차원 리스트를 만들어보겠습니다.

two_dimensional_list_create.py

a = []    # 빈 리스트 생성
 
for i in range(3):
    line = []              # 안쪽 리스트로 사용할 빈 리스트 생성
    for j in range(2):
        line.append(0)     # 안쪽 리스트에 0 추가
    a.append(line)         # 전체 리스트에 안쪽 리스트를 추가
 
print(a)

실행 결과

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

먼저 빈 리스트 a를 만들고, 세로 크기만큼 반복합니다. 그리고 안쪽 리스트로 사용할 빈 리스트 line을 만든 뒤 가로 크기만큼 반복하면서 append로 0을 추가합니다. 바깥쪽 반복문에서는 다시 append로 전체 리스트 a에 안쪽 리스트 line을 추가하면 됩니다. 여기서는 append에 리스트를 넣으면 리스트 안에 리스트가 들어가는 특성을 이용했습니다.

for 반복문을 두 번 사용하니 코드가 좀 길어졌죠? 리스트 표현식을 활용하면 코드 한 줄로 2차원 리스트를 만들 수 있습니다.

>>> a = [[0 for j in range(2)] for i in range(3)]
>>> a
[[0, 0], [0, 0], [0, 0]]

간단하게 리스트 표현식 안에서 리스트 표현식을 사용했습니다. 먼저 [0 for j in range(2)]로 0을 2번 반복하여 [0, 0]으로 만들고 다시 for i in range(3)으로 [0, 0]을 3번 반복하여 [[0, 0], [0, 0], [0, 0]]으로 만듭니다.

만약 for 반복문을 한 번만 사용하고 싶다면 다음과 같이 식 부분에서 리스트 자체를 곱해주면 됩니다.

>>> a = [[0] * 2 for i in range(3)]
>>> a
[[0, 0], [0, 0], [0, 0]]

즉, 0이 한 개 들어있는 리스트 [0]을 두 번 곱하면 [0, 0]이 되는데 이걸 for i in range(3)로 3번 반복해주면 [[0, 0], [0, 0], [0, 0]]이 됩니다.

이처럼 리스트 표현식은 다양한 방식으로 응용할 수 있으므로 눈에 익혀 두는 것이 좋습니다.

지금까지 2차원 리스트(튜플)에 대해 배웠는데 문법이 조금 복잡했습니다. 다차원 리스트는 어려운 주제이므로 당장 이해가 되지 않는다면 그냥 넘어가도 됩니다. 일단 2차원 리스트는 세로, 가로 순으로 접근한다는 점만 기억하면 됩니다.