Youtubeでも活動中

チャンネル登録してくれたら喜びます。
リンクはフリーです。共有・拡散は大歓迎!

このボタンで簡単にチャンネル登録!
PR

pythonでデータをまとめて処理(List)したいなら【初心者向けpythonプログラミング】

python-List

今日はpythonのListについて解説していきます。

Listとは何か?簡単に説明すると、データの集まりです。

変数を使用するイメージができても、

その変数たちをpythonでまとめて処理する必要があるばあい、

一個一個処理していくのは面倒ですよね?

そんなときにはpythonの標準機能であるListを使用しましょう。

この記事を読むことでわかること

自己紹介

東証一部上場企業でサラリーマンしてます。

主に工場(生産現場)で使用する検査装置のアプリケーション開発してます。

ヒトの作業を自動化して簡略化するアプリケーションを日々開発中。

2022年5月に転職。現役バリバリの技術者です。
現在は超大手企業の新規事業分野で装置の研究・開発をしています。

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さんの点数が出力されます。

ここまででわかったと思いますが、

  • Listの[]の中に番号を入れることで要素が取得できる。ただし1番目は0。

ということです。

-1で最後の人ですが、-2と入れれば、最後から2番目の人の点数を取得することも可能です。

さらに、一人分だけではなく、

複数人の点数を取得する方法もあります。

それが、スライスという方法です。

もし、BさんとCさんの点数を取得したい場合、

Bpoint=testPoint[1]
Cpoint=testPoint[2]

これで解決なのですが、

できることなら一気に二人分を取得したいですよね。変数が増えると面倒なので。

そういう場合は、こんな感じでスライスします。

BCpoint=testPoint[1:3]
print(BCpoint)

これは、こんな機能を使っています。

  • List名[A:B] A番以上、B番未満を出力する。

ここでいう、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)についても解説します。

コメント

タイトルとURLをコピーしました