だぶるばいせっぷす 新館

ホワイトカラーではないブルーカラーからの視点

【プログラミング】 python奮闘記 その16 ~リスト

この記事は、現在進行系でゼロからプログラミングを勉強している私が、勉強の一環として進展状況をアウトプットする目的で投稿しています。
その為、間違った記述や無駄な作業が結構多めとなっていますが、『それでも良いから一緒に勉強している気になりたい』という方に向けて書いていますので、予め御了承ください。

前回は、ラジオボタンを作ることで、ユーザーに4つの選択肢を選んでもらって、それを計算に反映させるというところまで書きました。
これによって、今まで書いたif文に更に条件を付け加えることによって、ユーザーの指定した回答にたどり着けるように出来たのですが…
この方法だと、書く量も多い、まぁこれは、同じ様な文なのでコピペでも良いわけですが、そもそも同じ様な文章を書かなければならないってだけで、プログラムとして変。
また、訂正するときにかなりの箇所を訂正しなければならない為、大変。 どちらにしても、もっと良い方法があるだろうというところで終わりました。
kimniy8.hatenablog.com

という事で今回は、この事を解決するために、新たな技術を導入したいと思います。
それが、『リスト』です。

入門書などを読むと、かなり最初の方に書いてあるリストなのですが、そこで紹介されている例を見ても、私のような素人にはイマイチ、便利機能に思えなかったんですよね。
ただ、実際にプログラムを書いてみると、『この機能を利用すれば、もっとコンパクトに書けるんじゃ?』と思い、今回、導入してみることにしました。

その前に、私と同じように、pythonを勉強中の方に向けて、簡単なリストの説明を書いていきます。

リストとは、簡単にいうと、一つの変数に複数の値を覚えさせることが出来る機能です。
例えば、『a=3』とした場合に、aに3が代入されるというのは、簡単に理解できますよね。
一つの変数に対して一つの数字を当てはめるというのは、理解も簡単だし使い方も容易に想像できると思います。

でも、プログラムでは、一つの変数に複数の値をもたせることが出来て、それを可能にするのがリストなんです。
例えば

a=[3, 5, 6, 7, 1]

といった感じで代入する事で、この例の場合は5つの数字を変数『a』に覚えさせることが出来ます。
では、『値を呼び出すときはどうするの?』と疑問を持たれる方もいらっしゃるでしょう。
複数の値を覚えさせることが出来たとして、呼び出すときに5つ全部を一度に呼び出すことしか出来ないのであれば、リストの使い勝手は激減します。

でも安心してください、リストは、覚えさせた数字を1つ1つ呼び出すことが可能なんです。
その方法とは、こんな感じ

>>>a=[3, 5, 6, 7, 1]
>>>a
[3, 5, 6, 7, 1]
>>>a[2]
6

変数『a』に5つの数字を覚えさせて、そのまま『a』の値を聞くと、リスト内の全ての数字を返してくるのですが、『a[2]』といった感じで、指定することで、3番目の数字の6が返ってきます。
『え? 2番を指定したのに3番目が返ってくるの?』と思われる方もいらっしゃるでしょうが、リストの一番最初の番号は『0』なので、『2』は3番めに当たるんです。。
『0.1.2.3.4.』
その為、5つ目の数字を呼び出すためには『a[4]』としなければなりません。この辺りは慣れですね。

このリストには、3つの種類があります。

>>> b=[0,1,2,3,4,5]
>>> b[3]
3
>>> c=(6, 7, 8, 9, 0)
>>> c[2]
8
>>> d={"a":4,"b":2,"c":9}
>>> d["c"]
9

一番上がリストで、次がタプル()、最後が辞書{}です。
それぞれの違いを書いていくと、リストは後から書き換えが可能(ミュータブル)なもので、リストへの追加なども簡単にできて使い勝手が良いものです。
2つ目のタプル()は、中の要素の書き換えが出来ない(イミュータブル)ので、使い方が限定されます。 絶対に変えたくない値などを入れる時に使います。
この2つの呼び出し方は同じで、複数の値を代入した変数の横に
を書いて、中に呼び出したい数字を書くだけです。
注意点としては、タプルの呼び出しはc(2)ではなく、c[2]と[]で書くことです。

3つ目の辞書だけが少し違って、この辞書には順番という概念がありません。
そのかわり、2つの要素を結びつけて覚えさせることが可能となっています。
2つの値が『:』で分けられて、『,』で区切られていますが、『:』で区切られたほうがベアーで、左側の値がキーとなる値で、これを指定することでペアになっている左側の値を呼び出せます。

このリストですが、単純に複数の値を入れるだけではなく、リストの中にリストを入れることもできちゃったりします。

>>> h=[({"a":1,"b":3},{"c":4,"d":5}),(3,5),[4,6,7]]
>>> h[2][1]
6

一つのリストの中に、辞書やタプルといった異なるタイプのリストを保管することが出来るので、使い方によっては大幅に労力を短縮できそうです。
という事で次回は、早速、実装していこうと思います。