Unit 21. 2차원 리스트와 튜플 사용하기

지금까지 한 줄로 늘어선 1차원 리스트를 사용했는데 이번에는 평면 구조의 2차원 리스트(튜플)를 사용해보겠습니다.

2차원 리스트는 다음과 같이 가로×세로 형태로 이루어져 있으며 행(column)과 열(row) 모두 0부터 시작합니다.

그림 21-1 2차원 리스트
그림 24 1 2차원 리스트

21.1 2차원 리스트를 만들고 요소에 접근하기

2차원 리스트는 리스트 안에 리스트를 넣어서 만들 수 있으며 안쪽의 각 리스트는 ,(콤마)로 구분합니다.

  • 리스트 = [[값, 값], [값, 값], [값, 값]]

그럼 숫자 2개씩 3묶음으로 리스트를 만들어보겠습니다.

>>> a = [[10, 20], [30, 40], [50, 60]]
>>> a
[[10, 20], [30, 40], [50, 60]]

가로 2, 세로 3의 2차원 리스트가 만들어졌습니다. 여기서는 리스트를 한 줄로 입력했지만 가로, 세로를 알아보기 쉽게 세 줄로 입력해도 됩니다.

a = [[10, 20], # ←
     [30, 40], # ← 세로 3줄
     [50, 60]] # ←

2차원 리스트의 요소에 접근하거나 값을 할당할 때는 리스트 뒤에 [ ](대괄호)를 두 번 사용하며 [ ] 안에 세로(row) 인덱스와 가로(column) 인덱스를 지정해주면 됩니다.

  • 리스트[세로인덱스][가로인덱스]
  • 리스트[세로인덱스][가로인덱스] = 값
>>> a = [[10, 20], [30, 40], [50, 60]]
>>> a[0] [0]            # 세로 인덱스 0, 가로 인덱스 0인 요소 출력
10 #  ↑   ↖ 가로 인덱스
   # 세로 인덱스
>>> a[1][1]           # 세로 인덱스 1, 가로 인덱스 1인 요소 출력
40
>>> a[2][1]           # 세로 인덱스 2, 가로 인덱스 0인 요소 출력
60
>>> a[0][1] = 1000    # 세로 인덱스 0, 가로 인덱스 1인 요소에 값 할당
>>> a[0][1]
1000

2차원 리스트도 인덱스는 0부터 시작합니다. 따라서 리스트의 가로 첫 번째, 세로 첫 번째 요소는 a[0][0]이 됩니다.

그림 21-2 인덱스로 2차원 리스트의 요소에 접근
그림 24 2 인덱스로 2차원 리스트의 요소에 접근

2차원 리스트를 만들 때 리스트 안에 튜플을 넣거나, 튜플 안에 리스트를 넣는 방식도 사용할 수 있습니다. 물론 튜플만으로 구성해도 상관 없습니다.

  • 리스트 = [(값, 값), (값, 값), (값, 값)]
  • 튜플 = ([값, 값], [값, 값], [값, 값])
  • 튜플 = ((값, 값), (값, 값), (값, 값))
a = [(10, 20), (30, 40), (50, 60)]    # 리스트 안에 튜플을 넣음
b = ([10, 20], [30, 40], [50, 60])    # 튜플 안에 리스트를 넣음
c = ((10, 20), (30, 40), (50, 60))    # 튜플 안에 튜플을 넣은 2차원 튜플