どうも、としです。
今回はPython講座の第5章としてめちゃくちゃ便利な機能である
- リスト
- 辞書
というものについて解説をしていきます。
プログラムをやっていて「よくわからん!」となるポイントの1つとして配列という仕組みがあるんですね。
僕もこの配列を理解するのになかなか苦労しました、、
その配列が今回話をするリストと辞書というものになります。
厳密には他にもタプルというものがあったりするのですが、、
まずはこのリストと辞書の2つをしっかり覚えておけばプログラムを組むうえでかなり応用が出来ます。
なのでぜひリストと辞書についてマスターしてくださいね。
目次
Pythonのリストの解説
ということで最初はリスト(リスト型)の解説になります。
書き方としては
test_list = [0, 1, 2, 3, 4]
ちなみにこれはtest_listという変数にリスト型で値を代入しているわけですね。
ここら辺は4章の変数で詳しく解説しています。
詳しく知りたい方は上のリンクから読んでくださいね。
話をリストに戻しますね。
リストの書き方は[](カッコ)で括って、その中に『,』(コンマ)で区切ったデータを入れる事で作成できます。
これでリストを作成出来たわけですが、あとはこのリストをどうやって使っていくかという部分ですね。
ということで、
- 値の取り出し方
- リストへの値の追加方法
- リストから値を削除する方法
この3つについて順番に解説していきます。
リストから値を取り出す
そうしたらまずは作成したリストから値を取得する方法です。
今回作成したリストはこちらでしたね。
test_list = [0, 1, 2, 3, 4]
ここからリストの値をprint文で取得したい場合は、どうすればいいと思いますか?
そのまま
print(test_list)
とすればなんとなく表示出来そうですよね。
でっ、これは実際やってもらうといいのですが、リストがそのまま表示されてしまいます。
そうではなくて今回やりたいのはリストの中の値、、
例えば今回では0、1、2、3、4の数字のどれかを取得したい。
その場合にはこういった方法があります。
test_list = [0, 1, 2, 3, 4]
print(test_list) # 出力→[0, 1, 2, 3, 4]
print(test_list[0]) # 出力→0
print(test_list[1]) # 出力→1
print(test_list[2]) # 出力→2
print(test_list[3]) # 出力→3
print(test_list[4]) # 出力→4
リストの特徴として『順番を保持する』という特徴があるんですね。
なのでリストの何番目か、、例えば0番目の値を取得したいなら
print(test_list[0])
という感じで
リストが入っている変数[インデックス番号]
という感じで値を取得出来ます。
※プログラムは基本的に0から始まるので、最初は0になります。
上ですでに書いてありますが、この順番のことをインデックスと言います。
順番を保持しているので、例えばこんな感じで順番を入れ替えた場合には
test_list_2 = [4, 3, 2, 1, 0]
print(test_list_2) # 出力→[4, 3, 2, 1, 0]
print(test_list_2[0]) # 出力→4
print(test_list_2[1]) # 出力→3
print(test_list_2[2]) # 出力→2
print(test_list_2[3]) # 出力→1
print(test_list_2[4]) # 出力→0
こう表示されます。
ただこうやってインデックスを指定して値を出力するというのは、個人的にプログラムを組んでいてあまり多くないです。
これは次回詳しく話をしますが、、
『for文を使用してリストの値を順番に全て取り出す』
こうやってリストを活用することが多いです。
詳しくは次回の章で話していきますね。
リストに値を追加
次はリストに値を追加する方法です。
追加する時に使用するのがappendというものになります。
一応リスト同士を結合するextend、指定の位置(インデックス)に値を追加するinsertがあるのですが、、
個人的にappendをしっかり覚えておけば使う上で問題ないかなと感じています。
ということでappendについて見ていきますね。
まずこちらがコードになります。
test_append_list = []
test_append_list.append(1)
test_append_list.append(2)
print(test_append_list) # 出力→[1, 2]
最初の行でやっているのがtest_append_listという変数に空のリストを代入しています。
ただ代入というよりも空のリストを作成しているという感覚ですね。
でっ、そのリストにappendを使用して数字の1、2を追加しています。
最後にそのリストをprint文で出力するというものです。
これで重要なのが1の後に2が追加されているという部分なんですね。
順番に入れているので感覚的に当たり前っちゃ当たり前なのですが、、
このappendというのは具体的に言うと
リストの最後に値を追加する
という処理を行っています。
『リストは順番を保持している』
これがかなり重要な部分なので、この順番という部分を常に意識してくださいね。
リストから値を削除
最後はリストから値を削除する方法です。
方法としては、、
- clear()
- pop()
- remove()
必要に応じてこのどれかを使用していきます。
●clear()の解説
clearに関しては分かりやすくて、
全ての値が削除されて空のリストになる
という処理です。
実際にやってみると
test_clear_list = [0, 1, 2, 3, 4]
print(test_clear_list) # 出力→[0, 1, 2, 3, 4]
test_clear_list.clear()
print(test_clear_list) # 出力→[]
こんな感じで全ての値が消えているのが分かりますね。
●pop()の解説
popは指定した位置(インデックス)を削除出来る機能です。
test_pop_list = [0, 1, 2, 3, 4]
print(test_pop_list) # 出力→[0, 1, 2, 3, 4]
test_pop_list.pop(0)
print(test_pop_list) # 出力→[1, 2, 3, 3]
こんな感じで0番目を削除したいならpop(0)としてあげれば削除する事が出来ます。
ちなみにpop(-1)と指定すると最後の値を削除出来るので、こちらも覚えておいてくださいね。
でっ、実はpopには削除をするというのともう1つ機能があって、、
この削除した値を一緒に取得することも出来るんですね。
test_pop_list_2 = [0, 1, 2, 3, 4]
get_pop_num = test_pop_list[-1]
print(get_pop_num) # 出力→4
こんな感じでpopをするときに変数に代入するという書き方をすると、その削除する値を一緒に取得してきてくれます。
●remove()の解説
removeは指定した値を削除出来る機能です。
test_remove_list = ['suzuki', 'saito', 'tanaka', 'suzuki']
print(test_remove_list) # 出力→['suzuki', 'saito', 'tanaka', 'suzuki']
test_remove_list.remove('suzuki')
print(test_remove_list) # 出力→['saito', 'tanaka', 'suzuki']
ここまではリストにデータとして数字を入れていましたが、文字列でやっています。
まずは[‘suzuki’, ‘saito’, ‘tanaka’, ‘suzuki]ということで4つのデータをリストに格納します。
でっ、このリストからremove(‘suzuki’)ということでsuzukiというデータを削除します。
ここで注意としてremoveは
指定した値に一致する値がリストに複数含まれる場合は、最初の一つだけが削除される
という処理が行われます。
そのため結果としては最初のsuzukiだけが削除された
['saito', 'tanaka', 'suzuki']
というリストが出力されるというわけですね。
ちなみにリスト内に入っていない値をremoveで指定しますとエラーが起きるので、注意してくださいね。
ここまでがリストの使い方の解説になります。
Pythonの辞書の解説
次は辞書(辞書型)の解説になります。
これもリストと同じくらい便利な機能です。
辞書はこういった感じで書きます。
test_dic = {'tanaka':20, 'suzuki':23, 'saito':25}
言葉で説明すると
『{}』(中カッコ・波カッコ)で括って、keyとvalueを『:』(コロン)でつなげたデータを『,』で区切る
というので作成することができます。
値(key)に対して、何かの値(value)を紐づけて起きたいときに使用します。
今回であれば名字と年齢を紐づけているわけですね。
いろいろ値があって複雑そうなんですが、使い方が分かると凄く便利なのでぜひ覚えてくださいね。
こちらもリストと同じように
- 辞書からデータの取り出し方
- データの追加・変更方法
- データの削除方法
こういった順番で解説していきますね。
辞書からデータを取り出す
まずはデータの取り出し方の解説です。
でっ、データを取り出す前にまずは用語を辞書に必要な覚えてほしいです。
それが
- key:キー
- value:バリュー
この2つの用語になります。
keyというのが辞書に入っているデータの中で『:』で区切っている左側のデータです。
最初のデータで考えればtanakaという文字列ですね。
そのkeyに今回は20という数字の値をvalueとして紐づけています。
基本的に辞書から値を取得するときには
『keyを指定してvalueを取得する』
という方法になります。
こういったコードです。
print(test_dic['tanaka']) #出力→20
辞書が入った変数に対して[key]でvalueを取得することが出来ます。
リストとの違いとしては「順番では取得できない」という点です。
そのためリストの時には
print(test_list[0])
みたいな感じでインデックスで値を取得することが出来ましたが、、
それと同じように辞書で行うと
print(test_dic[0])
これはエラーを出してしまいます。
なので「辞書はkeyを指定してvalueを取得する」ということを覚えておいてくださいね。
辞書へデータの追加・更新
次は辞書へデータを追加・更新する方法です。
リストの場合には追加する場合にはappendというものを使用しましたが、、
辞書の場合にはこういったものは使用しないです。
というのも何回も話す部分ですが、辞書というのは
keyに対してvalueが紐づけられている
こういったものでしたよね。
そのため辞書の中でどういったkeyに対してvalueを紐づけるかを指定してあげる必要があります。
書き方としてはこういった感じです。
test_dic = {'tanaka':20, 'suzuki':23, 'saito':25}
test_dic['takahashi'] = 21
print(test_dic) # 出力→{'tanaka': 20, 'suzuki': 23, 'saito': 25, 'takahashi': 21}
print(test_dic['takahashi']) # 出力→21
takahashiというkeyに対して年齢である21という数字を紐づけたデータを辞書に追加しています。
でっ、リストの場合にはデータを更新するということはないですが、、
辞書の場合にはkeyに対してのvalueの値を更新するということがあります。
これも書き方としては追加の時と同じなのですが、、
test_dic = {'tanaka':20, 'suzuki':23, 'saito':25}
test_dic['suzuki'] = 27
print(test_dic) # 出力→{'tanaka': 20, 'suzuki': 27, 'saito': 25}
print(test_dic['suzuki']) # 出力→27
違いとしては『すでに存在しているkeyを指定』している点ですね。
第4章の変数の時に話をしましたが、プログラムで『=』というのは
左辺に右辺の値を代入する
という処理がされています。
そのためこの
test_dic['suzuki'] = 27
というのは
- 左辺では辞書からkeyがsuzukiのvalueという意味
- 右辺ではそのvalueに対して27という数字を代入
こういった処理がされているということですね。
辞書からデータを削除する方法
辞書からデータを削除する方法としては
- clear()
- pop()
この2つを覚えておいてもらえればいいかと思います。
どちらもリストの時にも出てきたものですね。
リストの時との違いなども含めて解説していきます。
●clearの解説
clearについてはリストの時と同じです。
辞書内のデータを全て削除して空の辞書にするというのがこのclearになります。
test_clear_dic = {'tanaka':20, 'suzuki':23, 'saito':25}
print(test_clear_dic) # 出力→{'tanaka': 20, 'suzuki': 23, 'saito': 25}
test_clear_dic.clear()
print(test_clear_dic) # 出力→{}
●popの解説
こちらのpopについては、指定したデータを1つ削除するものです。
内容としてはリストと同じなのですが、違いは指定の方法です。
辞書の場合にはインデックスというのがないので、popでしていするのはkeyになります。
なのでイメージとしてリストのremoveの方が近いかなと思います。
実際にやってみますね。
test_pop_dic = {'tanaka':20, 'suzuki':23, 'saito':25}
print(test_pop_dic) # 出力→{'tanaka': 20, 'suzuki': 23, 'saito': 25}
test_pop_dic.pop('suzuki')
print(test_pop_dic) # 出力→{'tanaka': 20, 'saito': 25}
こういった感じですね。
ちなみにリストの時と同じようにpop時に変数を「=」でつなげておくとvalueを取得することも出来ます。
test_pop_dic_2 = {'tanaka':20, 'suzuki':23, 'saito':25}
get_pop_value = test_pop_dic_2.pop('suzuki')
print(get_pop_value) # 出力→23
ただ正直今までプログラムを組んでいてpopを使った事ってあまりないです。
なので一応「こうやって削除出来るんだなー」くらいの感じで覚えてもらえれば大丈夫です。
まとめ
今回はリストと辞書について解説させてもらいました。
内容としては
・リストについての解説
・リストからデータの取得、追加、削除の方法
・辞書のついての解説
・辞書からデータの取得、追加・更新、削除の方法
という感じの内容でした。
このリストと辞書ってプログラムの中でもかなり難しい配列という部分の話になります。
1つの変数の中に多くのデータを入れて取り扱う。
これってプログラムを組んでいる中で本当に多い処理です。
なのでぜひ今回色々コードを載せておいたので、自分でも実際に書きながら実践して覚えていってくださいね。
次の章からはプログラムと言えばこれというfor文やif文という話をしていきます。
ここら辺が理解できるようになると、複雑なプログラムを組めるようにもなります。
なのでぜひこの先もお付き合いくださいね。