【Python】for文の基本的な使い方

Pythonでfor文により繰り返し処理をする方法について解説します。
目次
for 文による繰り返し処理
Pythonで、繰り返し処理を行う場合にはfor文を使用します。繰り返し処理には、while文も使用できますが、while文については「while文の基本的な使い方」を参考にしてください。
Pythonのfor文は、リストや辞書などのイテラブルなオブジェクト(※)から要素を取り出して処理を行います。
この記事では、Pythonにおけるfor文により繰り返し処理をする方法の基本について紹介します。
for 文の基本的な使い方
for文では、リスト、辞書、集合等のイテラブルなオブジェクトから要素を取り出して処理します。C言語等のfor文ではfor(i =0; i < 10; i++)のように初期化値、条件、変化式のように指定して繰り返し処理しますが、Pythonのfor文では少し異なっています。
Pythonにおけるfor文の構文は以下になります。
for 変数 in イテラブルなオブジェクト:
処理コード...以下の使用例を見ながらfor文の使い方を確認しましょう。
# for文の基本的な使い方
data = [10, 20, 30, 40, 50]
for dt in data:
print(f"dt: {dt}")【実行結果】 dt: 10 dt: 20 dt: 30 dt: 40 dt: 50
上記例では、dataという数値リストを用意し、dataから要素を一つずつ取り出して値を表示しています。dataの部分はリストだけではなく辞書、集合等のイテラブルなオブジェクトであれば同様に使うことができます。
break 文によるループの終了
for文の繰り返し処理では、一定の条件を満たした場合にfor文を抜けて次の処理に移りたい場合があります。このような場合にfor文を途中で抜けるにはbreak文を使います。
# break文でループを抜ける
data = [10, 20, 30, 40, 50]
for dt in data:
print(f"start: {dt}")
if dt > 30:
# 30より大きい値の場合はループを抜ける
print("break")
break
print("end")【実行結果】 start: 10 end start: 20 end start: 30 end start: 40 break
上記例では、for文で順に取り出した数値が30より大きい数値の場合にbreak文で処理を抜けます。
実行結果を見ると数値が40のループに入った際にdt > 30の条件に一致するため"break"という文字が表示されてループが終わっていることが分かります。この時、for文を抜けているため、後続の"end"という文字列は表示されていません。
continue 文による次のループへのジャンプ
上記で紹介したbreak文は一定条件を満たす場合にfor文を終了する方法でした。一定の条件を満たした場合に、以降の処理をスキップして次のループへ進みたい場合はcontinue文を使います。
# continue文で次のループへ
data = [10, 20, 30, 40, 50]
for dt in data:
print(f"start: {dt}")
if dt < 30:
# 30より小さい値の場合は、次のループへ
continue
print("end")【実行結果】 start: 10 start: 20 start: 30 end start: 40 end start: 50 end
上記例では、数値が30より小さい値の場合は、処理をスキップして次のループへ進みます。
実行結果を見ると10, 20の場合は"end"が表示されておらず、printがスキップされていることが分かります。しかし、break文のようにfor文を抜けているわけではなく後続する30, 40, 50についてはprint処理が実行されていることが分かります。
else による正常終了の確認
for文の処理が正常に終了しているかを確認したい場合には、elseで確認することができます。正常終了と言っているのは「break文が実行されていない」ということです。
以下の例で確認してみましょう。
# elseによるbreakのチェック(breakが呼び出されるケース)
data = [10, 20, 30, 40, 50]
for dt in data:
print(f"start: {dt}")
if dt > 30:
# 30より大きい値の場合はループを抜ける
break
print("end")
else:
# breakが呼び出されなければ実行
print("正常終了")
print("\n==========")
# elseによるbreakのチェック(breakが呼び出されないケース)
data = [10, 20, 30]
for dt in data:
print(f"start: {dt}")
if dt > 30:
# 30より大きい値の場合はループを抜ける
break
print("end")
else:
# breakが呼び出されなければ実行
print("正常終了")【実行結果】 start: 10 end start: 20 end start: 30 end start: 40 ========== start: 10 end start: 20 end start: 30 end 正常終了
上記例は、前半部分は「break文が呼び出されて処理を抜けるケース」、後半部分は「breakが呼び出されないケース」となっています。
前半の処理では、break文が呼び出されているのでelseの処理に入っていないことが分かります。一方で、後半の処理ではbreak文が呼び出されないのでelseの処理に入り、"正常終了"というprintが実行されています。
このようにbreak文の実行有無を確認するのにelseは便利です。
for 文でよく使う方法
range を用いた for 文
0, 1, 2, 3, 4, …のような数値シーケンスを使ってfor文を実行したい場合にはrangeが便利です。rangeを使用したfor文の使用方法については「rangeを用いたfor文の使い方」を参考にしてください。
enumerate を用いた for 文
for文を実行時に、繰り返しの中で取り出している要素が何番目の要素なのかを判断するにはenumerateが便利です。enumerateを使用したfor文の使用方法については「enumerateを用いたfor文の使い方」を参考にしてください。
zip を用いた for 文
for文を実行時に、例えば2つのリストを同時に繰り返し処理するといったように複数オブジェクトを同時に処理するにはzipが便利です。zipを使用したfor文の使用方法については「zipを用いたfor文の使い方」を参考にしてください。
まとめ
Pythonでfor 文により繰り返し処理をする方法について解説しました。
Python の for 文は、リストや辞書などのイテラブルなオブジェクトから要素を取り出して処理を行います。この記事では、for 文の基本的な使い方を紹介しました。
for 文は、Pythonに限らず、多くのプログラム言語における重要な制御構文です。しっかりと使い方を覚えて、使えるようにしましょう。
上記で紹介しているソースコードについては GitHub にて公開しています。参考にしていただければと思います。




