Python での 繰り返し(ループ)処理について解説

本記事はPython での繰り返し(ループ)処理について解説していきます。

for 文について

Python には for 文と言われる文法があります。文法についてはこちらの記事を参考にしてください。

Python の if 文について解説
本記事では Python における if 文について解説します。 始めに 全てのプログラミング言語には、記述する際に守らなければいけないルールが存在します。このことを単に「文法」と呼びます。 def、クラスの記述法も Python のルール...

for 文を記述すると、同じ処理を繰り返し行うことができるようになります。以下のように記述します。

for 変数 in 繰り返し可能なオブジェクト:
    処理1
    処理2
      ・
      ・
      ・

for 文の挙動について実際に確認してみましょう。このブログからプログラミングを始めた方は「for_practice」としてファイルを実行してください。ファイルの作成方法は以下の記事を参考にしてください。

Jupyter Notebook でのファイル作成方法
本記事では Jupyter Notebook でコード実行を行うためのファイル作成方法について解説していきます。 本サイトでは pip を用いて Jupyter Notebook のインストールを行っております。本記事から初めてご覧になった...

例文として以下のコードを実行します。

excluding_tax = [100, 120, 150]
tax = 1.08
including_tax = []
for i in excluding_tax:
    money = round(i * tax)
    including_tax.append(money)
including_tax

以下のコードを実行すると次の結果が出力されます。

for文の結果

for 文を実行することによって、繰り返しで処理を実行することができました。

組み込み関数 range, enumerate について

Python では、for 文との相性が良い組み込み関数が定義されています。組み込み関数については、こちらの記事を参考にしてください。

Python の組み込み関数について簡単に解説
本記事では Python の組み込み関数について解説します。 組み込み関数の定義 組み込み関数とは、プログラミング言語が最初から提供している関数のことです。def やクラスは、私たちが定義して初めて使うことができますが、組み込み関数はプログ...

range

range は Python で使用されている組み込み関数( class 型)です。以下のように記述します。

range(スタートする値, 終了する値, 何個おきに出力するか)
# スタートする値は省略できます。省略した値は 0 として入力されます。
# 「何個おきに出力するか」は省略できます。省略した値は 1 として入力されます。

range のインスタンスを作成してみましょう。以下のコードを実行してみてください。

clf = range(0, 10, 1)
print(clf)

実行すると以下の結果が出力されます。

rangeインスタンスの作成

range メソッドである index や直接で取り出すことも可能ですが、実用的ではないので、for 文を使って取り出してみます。range と for 文を組み合わせて range に含まれる値を1つずつ取りだしてみましょう。以下のコードを実行してみてください。

for i in range(0, 10):
    print(i)

実行すると以下のようになります。

for+range

このように、range では、「スタートした値」から出力し、「終了する値」の一つ前の値まで出力します。

enumerate

enumerate は Python で使用されている組み込み関数( def 型)です。入力したリスト型、タプル型などの型を順番通りに出力しますが、それと同時に実行した順番を返します。以下のように記述します。

enumerate(iterable, スタートする番号)
# iterable はリスト型、タプル型、レンジ型など

range と同様に、for 文を使って取り出してみます。以下のコードを実行してみましょう。

num = ["a", "b", "c"]
for i, j in enumerate(num):
    print(i, j)

実行すると以下のようになります。

enumerate

“a”, “b”, “C” の順番で実行されるため、”a” の時に 0、”b” の時に 1、”c” の時に 2 が出力されます。スタートする番号を変更すると、出力される番号が変更されます。例えばスタートする番号を 5 に設定してみます。実行したコードは以下の通りです。

num = ["a", "b", "c"]
for i, j in enumerate(num, 5):
    print(i, j)

実行した結果は以下のようになります。

enumerate_start5

出力する値が変更した値が変更されたことを確認してください。

while 文について

Python には while 文と言われる文法があります。while 文を記述すると、記述した条件が満たされるまでループが行われます。具体的には以下のように記述します。

while 条件式:
    処理1
    処理2
      ・
      ・
      ・

条件式を工夫しないと、永遠にループが回ってしまうので注意してください。(実行を中止すればループは止まりますが。)while 文の挙動について実際に確認してみましょう。次のコードを実行してみてください。

n = 0
while n < 3:
    n = n + 1
print(n)

実行結果は以下のようになります。

n が 3 になった結果、while分のループが終了したため、n=3でループを抜け出しました。

ループで実行できる便利な処理

continue

一部のループの処理をスキップすることができます。以下のように記述します。

for i in リスト型など:
    処理1
    処理2
      ・
      ・
      ・
    if スキップしたいループ:
        continue # これ以降の処理は実行されません。
    処理1
    処理2
      ・
      ・
      ・

この処理を実行すると、if で指定した条件をスキップして実行することができます。実際にスキップできているか確認してみましょう。以下のコードを実行してみてください。

for i in range(0, 5 + 1):
    if i == 0:
        print("0 skip")
        continue
    print("number: ", i)

コードを実行した結果は以下のようになります。

continue

0 の時 print(“number: “, i) がスキップされていることが分かります。

break

ループの処理を終了することができます。以下のように記述します。

for i in リスト型など:
    処理1
    処理2
      ・
      ・
      ・
    if 終了したい条件:
        break # この処理でループが終了します。
    処理1
    処理2
      ・
      ・
      ・

この処理を実行すると、if で指定した条件が起こった場合、for 文のループを終了します。実際にループが終了できているか確認してみましょう。

stop = True
if stop == True:
    stop_num = 3
else:
    stop_num = -1

for i in range(0, 5 + 1):
    print("now :", i)
    if i == stop_num :
        print("Finish roop")
        break

コードを実行した結果は以下のようになります。

break実行結果

ループが 3 になったときに終了していることを確認してください。また「stop=False」にすると実行結果は以下のようになります。

break_false

ループ 3 との実行結果を比較してください。

else

ループを実行した後にのみ、処理を実行することができます。break で処理を実行した場合は処理を行わないので注意して下さい。以下のように記述します。

for i in リスト型など:
    処理1
    処理2
      ・
      ・
      ・
else:
    処理1
    処理2
      ・
      ・
      ・ 

この処理を実行すると、for 文のループが終了した後に else 内の処理が実行されます。以下のコードで実際に処理が行われているか確認してみましょう。

stop = False
if stop == True:
    stop_num = 3
else:
    stop_num = -1

for i in range(0, 5 + 1):
    print("now :", i)
    if i == stop_num :
        print("Finish roop")
        break
else:
    print("Complete roop!!!")

実行すると以下の結果が出力されます。

else

また break が実行されると、else の中身が実行されないことを確認します。「stop=False」にすると実行結果は以下のようになります。

stop_True

breakが行われると、else が実行されないことが確認されました。

最後に

今回は for 文を使用した処理を解説しました。

本記事は以上になります。ありがとうございました。

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