C/C++ 의 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]]
튜플안에 리스트를, 리스트 안에 튜플을 넣는 방식도 가능하다. 튜플은 수정이 불가능하고 리스트는 가능하므로 튜플안에 리스트가 있을 때 튜플 안의 리스트를 수정할 수 있다.
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는 가로 폭이다.