【 Python 】配列(リスト)多次元配列をわかりやすく!

この記事はPythonの配列について書いています。

配列

プログラミングにおける配列とは、変数のような入れ物の中に、規則に従った順番にあるいはランダムにデータを入れる構造体を言います。

例えば、変数が10個だけなら、変数を10個用意すればいいのですが、これが100個、1000個と増えていった場合、変数もその数だけ用意しなくてはなりません。

ですが、配列を使用することで、変数っぽい入れ物を1つ用意すれば良いわけですから、これほど便利なものはありません。

格納されたデータは要素と呼ばれ、Pythonでは、要素を持つ構造体はリストだけでなく、タプルやセット、ディクショナリー(辞書)があります。

特に、データベースからデータを受け取るようなプログラムではなくてはならない存在です。

リスト型

リスト型は、インデックスと要素から構成されています。

まずは、このコードを。

j_west = ["シゲちゃん","のんちゃん","りゅうせい","きりやま","じゅんた","はまちゃん","かみちゃん"]

print (list_sample[3])

1行目でj_westという入れ物に、ジャニーズwestのメンバーを入れ(順不同ですよ!)、2行目でそのindex3の要素を出力するだけのプログラムです。

indexは0から始まるため、3番目の要素のりゅうせいではなく、index3(4番目)のきりやまくんが出力されました。

リストの構造を簡単な図にしてみました。

図に書いてあるとおり、数字がindex、ひらがなが要素です。

多次元配列

Pythonでは(Pythonに限らずですが)多次元リストを使用することが出来ます。

多次元といっても、三次元配列まで・・・(だと思ってます)

2次元配列

とりあえず、例によってこのコードを(笑)

list_sample =[["しげちゃん","のんちゃん","りゅうせい"],\
              ["きりやま","じゅんた","はまちゃん"],     # \(バックスラッシュ)は¥のことです。 # \
              ["かみちゃん","5月20日","炎の転校生DVD"]] # 1行が長くなる場合等、改行し見やすくできます。
                           # 行の途中でも、#と#の間に文字を入れることでコメントを入れることが出来ます。
print (list_sample[2][0])

このコードの実行結果は、かみちゃんになりますが、なんで?

と思う方が多々いると思いますので、また微妙な図を用意しました(笑)

図のように、2次元配列のindexは[y][x]で表します。

今になって気がついたのですが、tableタグを使えば、こんな微妙なパワーポイントの画像を出さなくてもよかったですね・・・・(笑)

2次元配列をなんとなく覚えられたでしょうか?

3次元配列

3次元配列を覚えるのは、なかなか難しいですと思いがちですが、ようは考え方です。

では、次のコードを。

list_sample =[[["しげちゃん","のんちゃん","りゅうせい"],\
              ["きりやま","じゅんた","はまちゃん"],\
              ["かみちゃん","5月20日","炎の転校生DVD"]],\

              [["GE"],["モンハン"],["無双"],\
              ["KH"],["FF"],["DQ"],\
              ["KOF"],["地球防衛軍"],["バイオ"]],\

              [["アンパンマン"],["ドキンちゃん"],["バイキンマン"],\
              ["メロンパンナ"],["カレーパンマン"],["食パンマン"],\
              ["バタコさん"],["チーズ"],["ジャム親父"]]]

              
print (list_sample[2][0][0])

おわかりいただけるでしょうか?

後述しますが、要素を種類ごとに分けたのには理由があります。

2次元配列では、[y:index][x:index]だったのに対し、3次元配列では[z:index][y:index][x:index]と表記されます。

小難しいと思っている貴方。

思い出してください。先程の2次元配列の微妙な図を。

あの表が0枚目の紙だとすると、zのindexは1枚目、2枚目とページを増やしていけば良いのです。

つまり、この3次元配列のコードは、0ページ目がジャニーズwest、1ページ目がゲーム、2ページ目がアンパンマンの登場人物となっているわけです。

更に微妙な図を出します(笑)

3次元配列の要素の場所は、[ページ数][行][列]という構造だと思えば、すごくわかりやすい・・・・はず。

配列は考え方次第

データベースのやり取りでは、確実に配列を使用します。

2次元配列の要素の格納場所、3次元配列の要素の格納場所の理解は得られたでしょうか?

微妙な図で申し訳ありませんでした(笑)

最後までお読みいただきありがとうございました。