今日はpythonのListについて解説していきます。
Listとは何か?簡単に説明すると、データの集まりです。
変数を使用するイメージができても、
その変数たちをpythonでまとめて処理する必要があるばあい、
一個一個処理していくのは面倒ですよね?
そんなときにはpythonの標準機能であるListを使用しましょう。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
目次はこのような感じになっています。
pythonでListを使いたくなるタイミング
pythonでListを使いたくなるのは、
基本的にはデータがたくさんある場合です。
たくさんがいくつからなのか、については個人差はあると思いますが、
少なくても二けたくらいの種類の変数を使用する場合は、
Listを使用したほうが良いのではないかという感触です。
※個人差があるので、5個も変数を使うならListは必須!という人もいるかも…
具体例がないとピンとこないと思いますので、
今回は10人の学校の生徒のテスト結果を例にしてみます。
以下が条件です。
あなたは学校の先生です。 生徒10人のテスト結果をもとに、 赤点かどうかの判定を自動で行うことにしました。 ・赤点の基準は40点未満。 ・教科は1教科のみ。 ・すでに10人分の点数は変数に格納されているものとします。 ・何人赤点かだけ判定。
こんな感じだったとします。
この条件で行うとして、まずはここまでは記述されていることになります。
# 10人分の点数を変数に格納。
# 本来ならcsvファイルか何かから読み込みのが正しい。
# いちいちここで書くのもちょっと面倒なので普通やらない....
testPointA=55
testPointB=52
testPointC=23
testPointD=39
testPointE=66
testPointF=70
testPointG=95
testPointH=40
testPointI=51
testPointJ=71
redpoint=40 # 赤点の基準
Listを使用しないで【チカラワザ】でやる場合
さて、10人分のデータが変数に格納されていますね。
ここで赤点の40点を超えているか、もしくは下回っているかの
判定を行う場合このようになるはずです。
# 10人分の点数を変数に格納。
# 本来ならcsvファイルか何かから読み込みのが正しい。
# いちいちここで書くのもちょっと面倒なので普通やらない....
testPointA=55
testPointB=52
testPointC=23
testPointD=39
testPointE=66
testPointF=70
testPointG=95
testPointH=40
testPointI=51
testPointJ=71
redpoint=40 # 赤点の基準
redCounter=0
if testPointA<redpoint:
redCounter+=1
if testPointB<redpoint:
redCounter+=1
print(redCounter)
AさんとBさんしか書いていませんが、
あと8回も記述するのが面倒なので省略しました。
Cさん~Jさんまで書けば、
まあ赤点の人数はわかりますよね。
ただ、とっても面倒….
ではどうするか。そもそもAさんからJさんの点数を一つずつの変数に置いている時点で
だいぶ面倒なことになっています。
そこからListを使用するともっとスッキリします。
それではListを使用した場合の解説をします。
Listを使用した場合
まず、変数をいっぱい置いている問題ですが、
Listを使用すると、【変数は1個】で足ります。
どういうことかというと、testPointはこのようにまとめて定義することができます。
testPoint=[55,52,23,39,66,70,95,40,51,71]
これがListです。
Listという名前だけあって、複数の値を一つのリストにまとめることができます。
なので、今回はtestPointというList一つで変数は足りるんですね。
では、このListを使用すると、
先ほどのコードはどう変わるでしょうか?
redpoint=40 # 赤点の基準
redCounter=0
testPoint=[55,52,23,39,66,70,95,40,51,71]
for point in testPoint:
if point<redpoint:
redCounter+=1
print(redCounter)
たったこれだけです。
めちゃくちゃ短くなりましたよね??
これだけ短くなればコードを書く時間も、見やすさも段違いです。
具体例でListのすばらしさについてご理解いただけたと思うので、
次の章でもう少しListについて解説していきます。
もうすこしpythonのListについて詳しく解説
Listの具体例は前の章で説明しましたが、
そのほかにListの使い方で覚えておいたほうが良いことについて
追加で解説します。
Listの一部分だけを取得したい
Listはすべて要素が入った状態ですが、
仮にAさんだけの点数が欲しくなる場合もあるでしょう。
そんな時どうするか?
それは、このようにします。
Apoint=testPoint[0]
print(Apoint)
こうすることで、実行結果は、
"出力結果"55
と表示されます。Aさんの点数ですね。
ちょっと疑問に思ったかもしれませんが、
Aさんが1番目だからと言って、
testPoint[1]
とはなりません。
どのプログラミング言語でもたいていそうなのですが、
List(配列)の1個めは、0番と決まっています。
初めのころは慣れないかもしれないですが、覚えておきましょう。
ほかにも、最後の人の点数を取得したい場合は、
Apoint=testPoint[-1]
print(Apoint)
[]の中に-1を入れてあげることで、最後の人の点数、つまりJさんの点数が出力されます。
ここまででわかったと思いますが、
ということです。
-1で最後の人ですが、-2と入れれば、最後から2番目の人の点数を取得することも可能です。
さらに、一人分だけではなく、
複数人の点数を取得する方法もあります。
それが、スライスという方法です。
もし、BさんとCさんの点数を取得したい場合、
Bpoint=testPoint[1]
Cpoint=testPoint[2]
これで解決なのですが、
できることなら一気に二人分を取得したいですよね。変数が増えると面倒なので。
そういう場合は、こんな感じでスライスします。
BCpoint=testPoint[1:3]
print(BCpoint)
これは、こんな機能を使っています。
ここでいう、A番は0始まりのほうの番号です。
今回は、BさんとCさんの点数が知りたかったので、
Aさん0,Bさん1,Cさん2….なので
[1:3]ということになりますね。
Listに追加したい
Listに要素を追加したくなることもありますよね。
例えば転校生のHさんが来てListが1要素増える場合です。
そんな時は、こんな感じで増やすことが可能です。
testPoint=[55,52,23,39,66,70,95,40,51,71]
testPoint.append(99)
Hさんが99点だった場合ですね。
appendを使用することでListに追加することが可能です。
実際にtestPointのListの中身は、このように出力されます。
[55, 52, 23, 39, 66, 70, 95, 40, 51, 71, 99]
最後に99が追加されていますね。
これで追加完了です。
Listの要素を削除したい
Listの要素を削除する場合、生徒が転校して
データが不要になるような場合ですね。
Dさんが転校していなくなる場合を想定するとこんな感じです。
testPoint=[55,52,23,39,66,70,95,40,51,71]
testPoint.remove(39)
おやおや、と思ったと思いますが、
実はRemoveという関数を使って要素の削除は可能ですが、
何番目の要素を削除する、という使い方ではありません。
要素の中の、具体的な値を指定する必要があることに注意です。
ですから、例えば同じ点数の要素があった場合には、どちらも消えてしまうので注意が必要です。
もしListの番号を指定して削除したい場合は、
このようにremoveとは異なる関数を使用します。
del testPoint[0]
print(testPoint)
出力結果はこのように0番目の要素を削除できています。
[52, 23, 39, 66, 70, 95, 40, 51, 71]
Listの中で、具体的に削除したい要素の値がわかっている場合はremove、
要素の番号だけわかっている場合はdelを使うという感じで使い分けが必要ですね。
Listの要素を変更したい
もしBさんの点数が採点ミスで変更になった場合はどうでしょうか?
そんな時は、こんな感じで修正・変更が可能です。
testPoint=[55,52,23,39,66,70,95,40,51,71]
testPoint[1]=35
print(testPoint)
出力結果はこんな感じになります。
[55, 35, 23, 39, 66, 70, 95, 40, 51, 71]
ちゃんとBさんの点数が更新されているのがわかりますね。
Listの要素数を確認したい
生徒の数が何人だったか素早く確認する方法ですね。
もちろん、配列の要素を人の目で確認すれば数えられますが、
はっきり言って効率が悪いですよね….それに
appendやremoveなんかしていくと、その都度数え直しです…さすがに嫌ですね。
というわけでListの要素数はこんな感じで取得することが可能です。
testPointLength=len(testPoint)
print(testPointLength)
出力結果は、
"出力結果"10
ということで10人分のデータだということが一発で出せます。
pythonのListについてまとめ
Listを使用することによって、
変数を一つずつ定義していたものが圧倒的にラクになりますよね。
データの数が多くなってきたら、
めんどくさがらずにListに入れてみることをオススメします。
Listはたくさんのデータを処理するときに必須になりますが、
0番目がなんの要素だったかな….ということが起きるのも事実です。
今回のように生徒のテストの点数だった場合、
4番目だから….ああ、Dさんか、
あ、でも0始まりだからListの中では5番目だな。
というちょっと面倒なことも発生します。
なので、番号と要素の関係性が薄いものを扱うのが良いですね。
もし番号と要素の関係性が濃いものであれば、辞書型(dictionary)を
使うほうが便利な場合があります。
そのうち辞書型(dictionary)についても解説します。
コメント