【Python】配列(タプル型、リスト型…)などでまとめてみよう
たとえば、こんな書き方があったとき、
foods='apple'
foods1='pineapple'
foods2='grape'
1,2,3,...
とつけなければいけないとき、大変な思いをしたことはなかったでしょうか?
foods=['apple','pineapple','grape']
の書き方を覚えれば、
「グループで固められる」
ようになり、楽になります。
また、
food_num=0;
food_name='apple'
とするよりも、
food={
'name':'apple',
'num':0,
}
としたほうがわかりやすくないでしょうか。
foods=['apple','pineapple','grape']
のようなものを「リスト」。
food={
'name':'apple',
'num':0,
}
のようなものを「辞書」といいます。
それでは解説していきます。
配列編
Pythonは配列のことをリスト!?
Pythonでは配列のことを
「リスト型」
といいます。
リスト型はいくつかの変数を
「順にまとめたもの」
をいいます。
名前のつけ方は
foods
のように
「単語+複数形(s)」
を用いるとわかりやすいでしょう。
じゃぁ、どうやってリストの中身を取り出せばいいの?
という疑問が出てくるかもしれません。
そもそもリストは
「いくつかの変数をまとめたもの」
です。
いくつかの「変数」の連番を
「要素」
と呼びます。それでは、リストの中身の取り出し方を説明します。
取り出し方は
<リスト名>[0から始まる要素の番号]
でOKです。
これではわかりにくいので、例をあげて説明してみます。
たとえば、
fruits=['apple','grape','orange']
のようなfruitsのリストから
「apple」
を取り出したいとしましょう。
取り出すには
fruits[0]
と書いてあげればOKです。
また、
print(fruits[0])
と書けば、画面に出力してくれます。
リストの要素は書きかえることができて、
fruits=['apple','grape','orange']
fruits[0]='banana'
print(fruits[0])
とした場合、
のように
「banana」
と出力されます。
また、リストへも
「要素の追加」をする
こともできます。
たとえば、
fruits=['apple','grape']
のリストがあるとします。
fruits.append('banana')
のようにappendを使うと、
のように
['apple','orange','banana']
で要素が追加されていることがわかります。
タプル型はリスト型と違って一度決めたら変更できない
リスト型とよく似た型に、タプル型というものがありますが、リスト型とは違い、変更ができません。なので、
ユーザーに変更してほしくない、少しでも早くループを回したい…
といったときに最適な型となるでしょう。
ちなみに、タプル型の書き方は、ほぼリスト型と書き方は同じで、
(1,2,…)※ただし、要素が一つだけの場合は(1,)と書く!!
のようにカッコでくくることで、Pythonでは**タプル型(Tuple)**として認識してくれます。ですが、一度変数に入れてしまうと、タプル型のままでは変更することはできません。
tpl_a=(2,3)
print(tpl_a) #(2,3)と表示される。tuple型はprint関数では()でくくって表示される。
ちなみに、タプル型の要素のアクセス方法ですが、タプル型でもリスト型と同じく、
(変数の名前)[(要素の番号)]
と書けばOKです。なので、上のコードの変数tpl_aから0番目を取り出したい場合は、
tpl_a[0]#リスト型と書き方は同じです。
Pythonには、変数を定数化(const)させることはできないイメージをもたれがちですが、配列なら、
「タプル型」
と呼ばれる変数があることを覚えておくと良いでしょう😊
じゃぁ、具体的にタプル型とリスト型どうやって使い分けたらええのん?
さきほど解説したリスト型とは違い、一度設定してしまうと、自由に変更ができず、タプル型は扱いにくいイメージがあるかもしれませんが、
リスト型→変更できる(ミュータブル)
タプル型→変更できない(イミュータブル)
と考えればよいでしょう。
また、
リスト型とタプル型は相互に行き来(型変換)
ができますので、
一度リスト型で配列の追加を行い、あとで、タプル型に変更する
といったこともできます!!
ちなみに、タプル型からリスト型の変更するには、list関数を
tpl_a=list(tpl_a)
ちなみに、リスト型からタプル型に変更するには、tuple関数を
tpl_a=tuple(a)
使うと、型の変換ができるようになります。
【ちょっと深堀り】本当にタプル型って速いのん?
そもそも、
タプル型の配列を取り出す場合と、リスト型の配列を取り出す場合の処理の速さは異なります
と言っても、そのままでは信じてもらえないので、本当に速いか検証してみましょう。
リスト型の変数でループした場合の時間
タプル型の変数でループした場合の時間
をそれぞれ測ることにより、
本当にタプル型のほうが早くループを回せるのか
を検証していきたいと思います。それでは、コードを書いていきましょう!!
import time
a=[1,2,3,4,7,8,9,0]
tpl_a=(1,2,3,4,7,8,9,0)
begin=time.perf_counter()#time.perf_counter関数で時間の差を求めることで、処理速度を図っていきます。単位は秒。
time.sleep(0.001)#小数点で表示されやすいように少しの間スリープさせる。
for content in tpl_a:
print(content)
end=time.perf_counter()
print("タプル型の時間:",end-begin,"秒")
begin=time.perf_counter()
time.sleep(0.001)
for content in a:
print(content)
end=time.perf_counter()
print("リスト型の時間:",end-begin,"秒")
コードの解説ですが、簡単に説明しますと、
処理が始まった・終わった時間をperf_counter関数で実際にかかった時間取得。
タプル型とリスト型の時間をprint関数で表示
して、わかりやすくしました。すると、実行結果は…🤔
1
2
3
4
7
8
9
0
タプル型の時間: 0.001441913999999933 秒
1
2
3
4
7
8
9
0
リスト型の時間: 0.002753240000000101 秒
となりました。検証の予想通り、
タプル型のほうが処理速度が速い
ということがわかりました!!
ループ構文について、知りたい方は、以下のNoteを見てみてくださいね〜😉
タプル型が速い理由をもっと詳しく知りたい方はclassmethodさんの記事が詳しいので、Pythonもっと極めたい方はぜひ読んでみてください☺️⬇
少し話からそれちゃいますが、Pythonにおける処理速度を早くするものとして、
Pythonのライブラリの選び方
完成したらできるだけタプル型で回す
によって処理速度が変わることを知り、
Pythonってほんまに奥深いんだなと感じています。
Pythonでも辞書があるの!?
あるんです。Javascriptのオブジェクトに近いですね。
まず、
{
[キー]:[値、文字、関数など],
}
で
「{}(中カッコ)で囲む」
のが特徴です。
food={
name:'apple',
num:0,
}
のようなものをPythonでは
「辞書」
といいます。
辞書の要素の名前を
「キー」
といい、辞書の要素にアクセスしたい場合は、
[辞書の名前]['(キー)']
で行います。
たとえば、
food={
'name':'apple',
'num':0,
}
のように、リンゴの名前にアクセスしたい場合は、
foods['name']
と書くことでアクセスができます。
また、辞書は
「追加したり、書きかえたりすること」
ができます。
辞書の更新
辞書の更新の仕方は、
辞書名[キー]=書きかえたい数字・文字
でできます。
たとえば、
vegetables={
'tomato':'',
}
があるとすると、
vegetables['tomato']='トマト'
とすることで
「トマト」
に変更することができます。
辞書の追加
vegetables={
tomato:'トマト',
}
とすると
vegetables['eggplant']='なすび'
のように
「存在しないキー」
でアクセスすることで作ることができます。
まとめ
いかがでしたでしょうか?
・配列[リスト、タプル型](シーケンス型)
・辞書
を知ることで、
「一挙にまとめる」
ことが可能になります。では、また次のNoteでお会いしましょう!!
この記事が気に入ったらサポートをしてみませんか?