☆youtube更新中☆
▶Youtubeのチャンネル登録で更新頻度がUPするかも!!

Youtubeで文章にするのが難しい内容について
実際にしゃべって解説しています。
ブログでは紹介していない(しにくい)内容も
じゃんじゃん更新中。

▶Youtubeでhobbyhappyを応援する

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

python-ListPython
この記事は約9分で読めます。

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

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

  • 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をコピーしました