2차원 리스트 사용하기

C/C++ 의 2차원 배열과 유사하므로 개념설명은 생략한다.

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

>>> a = [ [1,2], 
					[3,4], 
					[4,5] ]
>>> a
[[1, 2], [3, 4], [4, 5]]
>>> a[2][1]
5

톱니형 리스트

위의 에제는 가로의 크기가 일정한다. 파이썬에서는 가로의 크기가 불규칙한 리스트를 만들 수 있는데 이를 톱니형 리스트(jagged list)라고 한다.

>>> a = [ [1,2],
...       [3],  
...       [4,5,6],
...       [7] ] 
>>> a
[[1, 2], [3], [4, 5, 6], [7]]

append(), extend() 를 이용해서 동적생성할 수 도 있다.

>>> a = []
>>> a.append([])
>>> a
[[]]
>>> a[0].append(10)
>>> a[0].append(20) 
>>> a.append([])
>>> a[1].append(300)
>>> a[1].extend([400, 500])
>>> a
[[10, 20], [300, 400, 500]]

2차원 튜플

튜플안에 리스트를, 리스트 안에 튜플을 넣는 방식도 가능하다. 튜플은 수정이 불가능하고 리스트는 가능하므로 튜플안에 리스트가 있을 때 튜플 안의 리스트를 수정할 수 있다.

사람이 보기 쉽게 출력하기

pprint 모듈이 pprint 함수를 이용해서 2차원 리스트를 사각형 구조로 출력할 수 있다.

from pprint import pprint
a = [ [i, i+5] for i in range(10) ]
print(a)
pprint(a, indent=4, width=20)
[[0, 5], [1, 6], [2, 7], [3, 8], [4, 9], [5, 10], [6, 11], [7, 12], [8, 13], [9, 14]]
[   [0, 5],
    [1, 6],
    [2, 7],
    [3, 8],
    [4, 9],
    [5, 10],
    [6, 11],
    [7, 12],
    [8, 13],
    [9, 14]]

indent는 들여쓰기 칸의 수, width는 가로 폭이다.

반복문으로 2차원 리스트 출력하기

for문 한 번만 사용하기