例題1では,クラス10人の英語の得点をリストで表現した。 このようなデータ構造を1次元配列と呼ぶ。 1次元配列では,1つの添え字(インデックス)で要素の指定が容易にできる。
これに対して,Excelの表のように縦横に数値が並んだものを2次元配列と呼ぶ。 Excelでは,表を参照するとき,たとえば,A列の3行目(A3)のセルなどと呼ぶ。 このように2次元配列では,要素を指し示すのに2つのインデックスを用いる。 2次元配列を用いると,あるクラスの複数教科の得点,ある年の複数都市の日平均気温, オセロゲームの盤面などのデータを表現することが容易となる。
Pythonでは,リストのリストをつくることで2次元配列を表現することができる。 たとえば,例題1の英語の得点(eigo)の他に,理科のテスト結果(rika)があるものとする。
eigo = [70, 75, 82, 35, 61, 60, 68, 73, 76, 65] rika = [35, 65, 76, 42, 52, 40, 50, 64, 88, 69]
これを2次元配列(リストのリスト)で表現するとすると,たとえば次のようになる。
score = [[70, 75, 82, 35, 61, 60, 68, 73, 76, 65], [35, 65, 76, 42, 52, 40, 50, 64, 88, 69]] print(score[0]) #eigo print(score[1]) #rika
各要素を参照するには,2つのインデックスを用いる。 たとえば,Aくんの英語の得点はscore[0][0],理科の得点はscore[1][0], Bくんの英語の得点はscore[0][1],理科の得点はscore[1][1], Jくんの英語の得点はscore[0][9],理科の得点はscore[1][9]となる。
ここで,次のような5行7列のマス目の値(ある月のカレンダー)をリストのリストで定義してみよう。
cal = [["", "", "", 1, 2, 3, 4], [ 5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25], [26, 27, 28, 29, 30, 31, ""]]
ここで,このマス目上の7は,cal[2][3]ではなく,cal[1][2]であることを思い出してほしい。 cal[2][3]には,15が代入されている。Pythonのリストで表現した場合,7の位置は,2行3列目ではなく,1行2列目となる。 このマス目上の4は,1行7列目ではなく,0行6列目,すなわち,cal[0][6]である。 cal[1][7]としてしまうと,"IndexError: list index out of range"となってしまう。