みやまのアトリエ

スマホアプリ開発 プログラミング ペンタブ備忘録 お絵描き

Python入門 3.リストの使い方

 前回、文字や数字を変数に代入することについて勉強しました。今回は、「リスト」について勉強しようと思います。

前回はこちら

マンガで分かるPython入門 「第2話 変数と代入を使う」 - みやまのアトリエ

 

f:id:M_Atelier:20180501213533p:plain

リストって何?

 以下のプログラムを書いて、実行してみてください。

プログラム

moji = "お願いしますプリ"
print (moji[0:6])

実行結果

お願いします

                               f:id:M_Atelier:20180501213702p:plain

 「お願いしますプリ」から「プリ」が除かれ、「お願いします」の文字だけが出力されましたね。このプログラムの内容を説明します。

 文字が変数に入れられるとき、実際には次の絵のようになっています。

f:id:M_Atelier:20180501213940p:plain

 文字を変数に代入すると、「moji」と書かれた“お部屋の沢山ある箱”が用意されます。これを「リスト」と呼んでいます。
 そこに文字が一文字ずつ格納され、0番から順に番号が割り振られます。この番号を、インデックスと呼んでいます。
※注意:番号は0番から始まります。1番ではありませんので、注意してください。

 

 先程のプログラムで「お願いします」だけを取り出すには、「moji」の箱の先頭「インデックス0番」から、6文字目「インデックス5番」までを取り出してくる必要がありますね。
 moji[0:6]は、「“お願いしますプリ”の文字が入っている箱の中から、“番号0~番号6の前まで”を取り出しなさい」という意味があります。

f:id:M_Atelier:20180501214027p:plain


 これで、「プリ」を取り除いた「お願いします」の文字だけを取り出すことができたのです。語尾カットホンの完成ですね。


紫京院ひびき「語尾が聞こえない…!これは語尾カットホン…!!」

 

文字を取り出す方法は他にもいくつかありますので、ここで紹介しておきます。

・文字[番号]:インデックス番号の1文字を取り出す
・文字[番号A:番号B]:インデックス番号A~Bの前までを取り出す
・文字[番号A :]:インデックス番号Aから最後までを取り出す
・文字[: 番号B]:先頭からインデックス番号Bの前までを取り出す

 

moji = "お願いしますプリ"
print (moji[1])
print (moji[0:6])
print (moji[6:])
print (moji[:6])

実行結果


お願いします
プリ
お願いします
図で示すと…

f:id:M_Atelier:20180501214209p:plain

 このように、リストに入れられた文字を任意に取り出してくることができます。

 

リストを作る

 リストは自分で作ることもできます。沢山のデータを取り扱うとき、リストは必須となりますので理解を深めておきましょう。
 次のプログラムを書いて、実行してみてください。


プログラム

precure = ["ミラクル","マジカル","マリン","トゥインクル"]
print("キュア"+precure[0])


実行結果

 precureという名前のリストを作り、そこに4つの文字"ミラクル","マジカル","マリン","トゥインクル"を代入しました。ミラクルにはインデックス番号「0」番が割り振られているので、precure[0]と書くことで、「ミラクル」を取り出してくることができます。その様子を下に示します。

f:id:M_Atelier:20180501214112p:plain

 このように、沢山のデータを取り扱うとき、リストにまとめて取り扱います。
 2018年でプリキュアも55人になったと言われています。わざわざ変数を55個用意するより、55人分のプリキュアリストを1つ作った方がプログラムも見やすくなりますね。

f:id:M_Atelier:20180501214449p:plain

 

 文字だけでなく、数字のリストを作ることも出来ます。
プログラム

kazu = [10,30,50,30,20]
print (kazu[2])

実行結果

50

 

辞書を理解する

 リストのデータにアクセスするには、インデックス番号を指定する必要がありますが、どのインデックス番号にどのデータが入っているかが分からなくなってしまいます。
 番号ではなく、miracleと書けばキュアミラクル、majicalと書けばキュアマジカルにアクセス出来たら便利ではないでしょうか。そこで、番号の代わりに自分の好きなキーワードで指定できるリスト「辞書」を説明します。

 

プログラム

precure = dict (
miracle = "キュアミラクル",
magical = "キュアマジカル",
marine = "キュアマリン",
twinkle = "キュアトゥインクル"
)
print (precure["magical"])

実行結果

 

 今までは各プリキュアの箱に番号が割り振られていましたが、分かり易いキーワード「magical」等で取り出してくることが出来るようになります。

  f:id:M_Atelier:20180501214351p:plain

  例えば、キュアトゥインクルを取り出したい場合は、「precure[twinkle]」と書きます。

変更できないリストを作成する

 リストに代入した内容は、変更出来ない方が都合の良い時もあります。「タプル」を用いることで、「一度代入したら、変更できないリスト」を作ることができます。
 ()内に、「,」でデータを区切り、代入します。通常のリストと異なる点は、

[ ]ではなく( )を使う点です。※タプルにおいて( )は省略して書く場合もあります。

プログラム

実行結果

 

 基本的な使い方はリストと同じですが、タプルは内容を入れ替えようとすると、エラーが出ます。下に例を示します。
プログラム

precure2 = ("キュアミラクル","キュアマジカル","キュアマリン","キュアトゥインクル")
precure2[2] = "キュアホイップ"

実行結果

TypeError: 'tuple' object does not support item assignment

 タプル(touple)は、一度代入した内容(item)を割り当てる(assignment)できません。という意味になります。

 タプルの内容「キュアマリン」を「キュアホイップ」に変更しようとしたため、エラーが発生しました。

 

今回のまとめ f:id:M_Atelier:20180501214616p:plain

 

 

次回は、「プログラムの流れを変える」です。

atelier.hatenadiary.com