Developer

【Python独学】多次元リスト
2020.11.02
Lv1

【Python独学】多次元リスト

今回は多次元リストというものをやっていきます。
難しそうに聞こえるかもしれませんが、基本的には今までのリストの応用になるので安心してください。


多次元リストとは

リストの要素としてリストが格納されているものを指します。

「???」だと思うので順番に行きますね。

ここまでの連載で扱ってきたリストなのですが、
厳密に言うと「1次元のリスト」ということになります。

これが2次元のリストになるとどうなるかと言うと。。。。

こうなります。
つまり色々なところで見かける「表」の様になるということですね!

後はこれの応用で、
3次元になると某3×3×3の何とかキューブみたいになり、
4次元になると何とかキューブが2つ出てきて・・・
と言った感じです。

この2次元以上のリストの事を多次元リストと呼びます。


2次元リストの作成

まずは今までのリストの書き方をおさらい。
変数名 = [要素1, 要素2, 要素3, ・・・]

これが2次元になるとどうなるかというと。。。
変数名 = [[要素1, 要素2, 要素3], [要素4, 要素4, 要素6], [要素7, 要素8, 要素9],・・・]
となります。リストを表す[]の中に更に[]が入っていますね。

とは言えこれだと先程イメージで見た表とは繋がりにくいですね。
なのでちょっと書き換えてみましょう。

変数名 = [
       [要素1, 要素2, 要素3],
       [要素4, 要素4, 要素6],
       [要素7, 要素8, 要素9],
       ・・・
]

これなら少しは表っぽくなったのでは無いでしょうか。
※実際の宣言も上記のように改行して行うことが可能です。

tow_dimensions = [
        ["①", "②", "③"],
        ["④", "⑤", "⑥"],
        ["⑦", "⑧", "⑨"]
    ]

print(tow_dimensions)

C:\Python> python tow_dimensions.py

[[‘①’, ‘②’, ‘③’], [‘④’, ‘⑤’, ‘⑥’], [‘⑦’, ‘⑧’, ‘⑨’]]

この様に宣言することで、表のイメージを持ちやすくなるのでは無いかと思います。
表示すると宣言時の改行は消えてしまいますが。。。。


2次元リストの個別の要素へのアクセス

では次は個別の要素へアクセスしてみましょう。

まずは基本の書き方のおさらい。
変数[インデックス]

それで、2次元リストになるとどうなるかというと。。。。
変数[インデックス(1次元目)][インデックス(2次元目)]
たったこれだけなのです。
もちろん3次元に増えたとしても
変数[インデックス(1次元目)][インデックス(2次元目)][インデックス(3次元目)]
こうなるだけです。シンプルですね!

ただ、これだけの説明だと宣言においてどちらが1次元目でどちらが2次元目なのかわからないと思います。
なので順番に説明していきますね。

まず先程と同様に以下の様に宣言すると。。。

tow_dimensions = [
        ["①", "②", "③"],
        ["④", "⑤", "⑥"],
        ["⑦", "⑧", "⑨"]
    ]


こんなイメージで格納されます。
この図を見てどれか一つを指し示すとしたら多くの人は
「青の右」
「緑の真ん中」
と言った風になるのでは無いでしょうか。(そうなる様に書いたつもりです。)

配列の指定も同じで、
1次元目 → [“①”, “②”, “③”] or [“④”, “⑤”, “⑥”] or [“⑦”, “⑧”, “⑨”]のいずれか
となります。

実際にソースコードで確認してみましょう。

tow_dimensions = [
        ["①", "②", "③"],
        ["④", "⑤", "⑥"],
        ["⑦", "⑧", "⑨"]
    ]

print(tow_dimensions[0]) #1次元目のみ指定
C:\Python> python tow_dimensions2.py

[‘①’, ‘②’, ‘③’]

この様に[“①”, “②”, “③”]が出力されました。
続いて2次元目も指定すると、

tow_dimensions = [
        ["①", "②", "③"],
        ["④", "⑤", "⑥"],
        ["⑦", "⑧", "⑨"]
    ]

print(tow_dimensions[0][2]) #イメージで言う「青の右」
C:\Python> python tow_dimensions3.py

無事一つの要素を取り出すことができました。

もちろん同じ方法で値の更新も可能です。

tow_dimensions = [
        ["①", "②", "③"],
        ["④", "⑤", "⑥"],
        ["⑦", "⑧", "⑨"]
    ]
tow_dimensions[0][2] = "青の右!"

print(tow_dimensions) 
print(tow_dimensions[0][2]) 
C:\Python> python tow_dimensions4.py

[[‘①’, ‘②’, ‘青の右!’], [‘④’, ‘⑤’, ‘⑥’], [‘⑦’, ‘⑧’, ‘⑨’]]
青の右!

まとめ

  • リストの中にリストが格納されている場合、それを多次元リストと呼ぶ。
  • 多次元リストの各要素にアクセスする方法は[インデックス]を増やしていく。

確認問題

1.「緑の真ん中」・「赤の左」を表示してみよう。
2.「緑の真ん中」・「赤の真ん中」の値を更新して表示してみよう。

連載目次

独学で学ぶ Pythonプログラミング 連載目次