【Python独学】多次元リスト
今回は多次元リストというものをやっていきます。
難しそうに聞こえるかもしれませんが、基本的には今までのリストの応用になるので安心してください。
多次元リストとは
リストの要素としてリストが格納されているものを指します。
「???」だと思うので順番に行きますね。
ここまでの連載で扱ってきたリストなのですが、
厳密に言うと「1次元のリスト」ということになります。
これが2次元のリストになるとどうなるかと言うと。。。。
こうなります。
つまり色々なところで見かける「表」の様になるということですね!
後はこれの応用で、
3次元になると某3×3×3の何とかキューブみたいになり、
4次元になると何とかキューブが2つ出てきて・・・
と言った感じです。
この2次元以上のリストの事を多次元リストと呼びます。
2次元リストの作成
まずは今までのリストの書き方をおさらい。
変数名 = [要素1, 要素2, 要素3, ・・・]
これが2次元になるとどうなるかというと。。。
変数名 = [[要素1, 要素2, 要素3], [要素4, 要素4, 要素6], [要素7, 要素8, 要素9],・・・]
となります。リストを表す[]の中に更に[]が入っていますね。
とは言えこれだと先程イメージで見た表とは繋がりにくいですね。
なのでちょっと書き換えてみましょう。
これなら少しは表っぽくなったのでは無いでしょうか。
※実際の宣言も上記のように改行して行うことが可能です。
tow_dimensions = [ ["①", "②", "③"], ["④", "⑤", "⑥"], ["⑦", "⑧", "⑨"] ] print(tow_dimensions)
この様に宣言することで、表のイメージを持ちやすくなるのでは無いかと思います。
表示すると宣言時の改行は消えてしまいますが。。。。
2次元リストの個別の要素へのアクセス
では次は個別の要素へアクセスしてみましょう。
まずは基本の書き方のおさらい。
変数[インデックス]
それで、2次元リストになるとどうなるかというと。。。。
変数[インデックス(1次元目)][インデックス(2次元目)]
たったこれだけなのです。
もちろん3次元に増えたとしても
変数[インデックス(1次元目)][インデックス(2次元目)][インデックス(3次元目)]
こうなるだけです。シンプルですね!
ただ、これだけの説明だと宣言においてどちらが1次元目でどちらが2次元目なのかわからないと思います。
なので順番に説明していきますね。
まず先程と同様に以下の様に宣言すると。。。
tow_dimensions = [ ["①", "②", "③"], ["④", "⑤", "⑥"], ["⑦", "⑧", "⑨"] ]
こんなイメージで格納されます。
この図を見てどれか一つを指し示すとしたら多くの人は
「青の右」
「緑の真ん中」
と言った風になるのでは無いでしょうか。(そうなる様に書いたつもりです。)
配列の指定も同じで、
1次元目 → [“①”, “②”, “③”] or [“④”, “⑤”, “⑥”] or [“⑦”, “⑧”, “⑨”]のいずれか
となります。
実際にソースコードで確認してみましょう。
tow_dimensions = [ ["①", "②", "③"], ["④", "⑤", "⑥"], ["⑦", "⑧", "⑨"] ] print(tow_dimensions[0]) #1次元目のみ指定
この様に[“①”, “②”, “③”]が出力されました。
続いて2次元目も指定すると、
tow_dimensions = [ ["①", "②", "③"], ["④", "⑤", "⑥"], ["⑦", "⑧", "⑨"] ] print(tow_dimensions[0][2]) #イメージで言う「青の右」
③
無事一つの要素を取り出すことができました。
もちろん同じ方法で値の更新も可能です。
tow_dimensions = [ ["①", "②", "③"], ["④", "⑤", "⑥"], ["⑦", "⑧", "⑨"] ] tow_dimensions[0][2] = "青の右!" print(tow_dimensions) print(tow_dimensions[0][2])
まとめ
- リストの中にリストが格納されている場合、それを多次元リストと呼ぶ。
- 多次元リストの各要素にアクセスする方法は[インデックス]を増やしていく。
確認問題
1.「緑の真ん中」・「赤の左」を表示してみよう。
2.「緑の真ん中」・「赤の真ん中」の値を更新して表示してみよう。