15分で分かるプログラミング基礎(ループでデータを処理する)

はじめに

今回はよく使うプログラミングの基礎を説明します。
よく使うプログラミング文法にループがあります。参考書などの最初の方に使い方が記載されていることがありますが、その活用方法などは記載されていることが少ないと思いました。そこで、私なりの活用方法かつ頻繁に使う方法を紹介します。とりあえずコードです。

コード

start_Number = 1
end_Number = 100
delta_Number = 2

Num_list = []
for i in range(start_Number, end_Number, delta_Number):
    print("今何番目?")
    print(i)
    Num_list.append(i) 
    print("Num_listの中に"+ str(i) +"を入れました")
    print(Num_list)
    print("----------------------------------")

print("Num_listの中に何が入っている?(全体)")
print(Num_list)
print("----------------------------------")

for Num in Num_list:
    print("Num_listから")
    print(Num)
    print("を取り出しました。そして、+1する処理を開始します")
  Num_plus1 = Num + 1
    print(Num_plus1)
    print("----------------------------------")

解説

行っていることはstart_Number(=1)からend_Number(=100)までをdelta_Number(=2)毎に順に並べるだけという単純なものですが、大量のデータの集約などに応用できます。


コードの解説です。printは実行結果の出力なので、とりあえず省きます。お試しで実行していみたい方は上をコピペして実行してみてください。

Num_list = []
for i in range(start_Number, end_Number, delta_Number):
    Num_list.append(i) 

[]は空っぽのlistという型で空っぽの箱ですが、内部は壁で区切られていて無限にものを入れられるをイメージしてください。=は[]に名前を付けるという意味です。今回はNum_listという名前を付けました。この箱の中に数字を格納していきます。箱の中身が区切られているので、番号をつけることができます。後でも説明しますが、番号があることで取り出しも簡単にできます。
さてここからが本題です。


for i in range(…):です。


まずは文法です。for ~~~ in …:となります。これは覚えましょう。意味としては「…の中から~~~を取り出して:より下を決まった回数実行してください」です。…は全データや全ファイルなどです。

~~~は自分で決めて大丈夫ですが、わかりやすい文字にしておくといいかもしれません。私は数学のくせでiとかjとかkとかlをよく使います。文字数は1文字でなくてもいいので…をdatasの複数形にして、~~~をdataの単数形にする人も多いと思います。

今回は…はrangeという関数を使ってstart_Numberからend_Numberまでをdelta_Number区切りで全データを作成しています。1~100までを2ずつデータを作成すると、1,3,5,7,9,…,95,97,99となります。その中からi番目を取り出して:より下を実行する処理となっています。

1を取り出して処理、3を取り出して処理、5を取り出して処理、…、95を取り出して処理、97を取り出して処理、99を取り出して処理を繰り返します。今回の処理はNum_listという箱の1番目に1を格納して、2番目に3を格納して、3番目に5を格納して、…、48番目に95を格納して、49番目に97を格納して、50番目に99を格納してを繰り返しします。この処理の流れはprintで確認できます。

続いて、格納したNum_listから1つ取り出して、+1する処理を行います。

方法としては2種類あります。一つ目は上記コードのループでfor Num in Num_list:で記入した部分です。意味は「Num_listの中らから順番にNumとして取り出し:より下でNumがあったら処理してください」です。こちらの方法を”直接取り出し法”と命名しておきましょう。

もう一つの方法はfor i in range(len(Num_list)):です。lenという関数を使ってNum_listに含まれている個数を参照して、range関数でその数まで:より下を処理する方法です。こちらの方法を”番号で取り出し法”と命名しておきましょう。二つの方法を下図に示しました。

各方法で処理するときに注意点があります。直接取り出し法ではfor Num in Num_list:で記入したNumを処理時に使えます。具体的には下記コードのように

Num_plus1 = Num + 1

取り出した数に+1を加えることができます。+1した数はNum_plus1という名前になります。
一方、番号で取り出し法ではひと手間加わり、Numの代わりにNum_list[i]というNum_listのi番目の数を取り出して処理します。上記コードを書き換えると

Num_plus1 = Num_list[i] + 1

となります。もし、こちらをコピペで実行したい場合for Num in Num_list:をfor i in range(len(Num_list)):に書き換えてください。

番号で取り出し法は一見めんどくさそうに見えますが、番号で指定できるので、他のデータで共通の個数のlistなどあった場合、二つのデータからいっぺんに取り出して処理することができます。

例えば、even_list = [1,3,5,7,9]とodd_list = [2,4,6,8,10]という奇数と偶数のlistがあった場合、各listの1番目から足していきたい場合、番号で取り出し法で行った方が楽だったりします。時と場合に合わせて各方法を選択してください。

ちなみに私は番号で取り出し法を頻繁に使っています。なぜなら数学の数列っぽくて(私にとって)わかりやすいからです。

最後に

以上がループの基礎になります。これを応用して複数のファイルを読み込みデータをまとめたり、一時的にデータリストを作成しておいて、そのデータリストを使ってまとめたデータのうち特定の行や列だけ取り出すなどできます。この応用方法は他の記事でも紹介してきます。

2023/08/10 J.A

コメント

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