見出し画像

Pythonの基本② ループ処理(for文)


for文の基本

Pythonのループ処理についてまとめています。個人的には、リストからデータを一つ一つ順番に取り出して処理していくループ処理と、インデックス番号を利用して指定した範囲でループ処理を行うループ処理をよく使用します。

for文の構文

pythonはfor文に限らず、構文はインデントの上げ下げで区別されます。繰り返したい処理が2行以上となる場合もインデントを揃えるひつようがあります。繰り返し処理終了後のコードは、インデントを戻して記述します。他言語だとEnd~と記述が必要だったりしますがpythonでは不要です。その分、行数も少なくなりますし、インデントが揃うのでスッキリ見えます。

リストを使用するループ処理

上図の青い部分でリストを使用する方法です。リストについては以前の記事をご参照ください。

そこで使用したリストを使用します。

a = ['りんご', 'みかん', 'なし', 'ぶどう', 'バナナ', 'パイナップル']

リストから1つずつ要素を取り出して、表示させます。取り出された要素はカウンタ変数iに代入されるので、繰り返し処理の中で使用することができます。
以下では、「私は○○が好きです。」という文字列の○○の部分にリストの要素を埋め込むコードを示しています。
※文字列を示す'(クオテーションマーク)の前にfを付けると、文字列中に変数を入れることが出来ます(f-string)。

for i in a:
  print(f'私は{i}が好きです。')

実行すると、
>私はりんごが好きです。
   私はみかんが好きです。
   私はなしが好きです。
   私はぶどうが好きです。
   私はバナナが好きです。
   私はパイナップルが好きです。  と表示されます。
リストの要素を1つずつ取り出して文字列に埋め込んで表示するという処理が繰り返し行われたことが分かります。

範囲を指定するループ処理

range関数

range関数は範囲を指定する関数で、開始値と終了値の数字を引数として入力します。0から開始する場合は、開始は省略できます。

for文+range関数

for文でrange関数を使用するとカウンタ変数に開始値から順番に数字が代入されます。
先程は、リストの要素をカウンタ変数に直接代入しましたが、range関数を使用してインデックス番号でリスト要素を指定することもできます。

for i in range(0, len(a)):
  print(f'私は{a[i]}が好きです。')

a[インデックス番号] とすることでリストから要素を取得できましたよね。インデックス番号をカウンタ変数としているので、range関数で指定した範囲の数字が順番に代入されます。
実行すると、
>私はりんごが好きです。
   私はみかんが好きです。
   私はなしが好きです。
   私はぶどうが好きです。
   私はバナナが好きです。
   私はパイナップルが好きです。  と表示されます。

ちなみに、、、リストaの要素数は6なので、range(0, 6)としても良いですが、リストが更新されるたびに終了値を変更しなければいけません。
range(0, len(a))というように、終了値をlen(a)(=リストaの要素数)としておけば、リストの中身が変更されてもコードを変えることなく対応することが出来ます。


今回はfor文を使用したループ処理を紹介しました。for文以外にもwhile文を使用してループ処理をすることもあります(機会があれば今後紹介します)。
実際の業務では、
 ・表から順番にデータを読み取って計算をする
 ・とあるフォルダに保存されているexcelファイル中の表を順番に結合し
  1つにまとめる
などなど人の手でやろうとすると面倒な繰り返し処理を簡単に自動化することが出来ます。

日報データなど日ごとのデータをコピペしてひと月分のデータを作成し、そこからグラフを作成する…この一連の操作もpythonで自動化できてしまいます。何だかデータを作る事(グラフ化するまで)に労力を割いてしまって、肝心の業務分析ができていないということはないでしょうか?本質的には、作成したデータからどのような傾向があるか分析することの方が重要ですよね。単純作業は自動化し、時間をかけるべきところに時間がかけられるようにしたいものです。


この記事が気に入ったらサポートをしてみませんか?