for文は、リストや文字列などの要素を一つずつ取り出して繰り返し処理を行うための構文です。データの集まりに対して同じ処理を適用したいときに使います。
この記事では、for文の基本構文から、range関数、enumerate、break・continueまで詳しく解説します。
基本的な使い方
for文は for 変数 in イテラブル: の形で書きます。イテラブル(リスト、文字列など)の要素が1つずつ変数に代入され、ブロック内の処理が繰り返し実行されます。
Python
# リストの要素を順に処理
fruits = ["りんご", "バナナ", "みかん"]
for fruit in fruits:
print(f"{fruit}が好きです")
print("---")
# 文字列の1文字ずつ処理
for char in "Python":
print(char, end=" ")
実行結果
りんごが好きです
バナナが好きです
みかんが好きです
---
P y t h o n
range関数
range()関数を使うと、指定した回数だけ繰り返し処理を行えます。
Python
# range(n): 0からn-1まで
for i in range(5):
print(i, end=" ")
print()
# range(start, stop): startからstop-1まで
for i in range(2, 6):
print(i, end=" ")
print()
# range(start, stop, step): stepずつ増加
for i in range(0, 10, 2):
print(i, end=" ")
print()
# 逆順(カウントダウン)
for i in range(5, 0, -1):
print(i, end=" ")
実行結果
0 1 2 3 4
2 3 4 5
0 2 4 6 8
5 4 3 2 1
enumerateでインデックスと値を取得
enumerate()を使うと、ループ中にインデックス(順番)と値を同時に取得できます。
Python
colors = ["赤", "青", "緑", "黄"]
for index, color in enumerate(colors):
print(f"{index}: {color}")
print("---")
# 開始番号を指定
for num, color in enumerate(colors, start=1):
print(f"{num}番目: {color}")
実行結果
0: 赤
1: 青
2: 緑
3: 黄
---
1番目: 赤
2番目: 青
3番目: 緑
4番目: 黄
break と continue
breakでループを途中で終了、continueで現在の繰り返しをスキップできます。
Python
# break: 条件を満たしたらループ終了
for i in range(10):
if i == 5:
print("5が見つかったので終了")
break
print(i, end=" ")
print()
# continue: 条件を満たしたらスキップ
print("偶数のみ表示:")
for i in range(10):
if i % 2 != 0:
continue
print(i, end=" ")
実行結果
0 1 2 3 4 5が見つかったので終了
偶数のみ表示:
0 2 4 6 8
辞書のループ
辞書をfor文でループすると、デフォルトではキーが取得されます。.items()でキーと値のペア、.values()で値のみを取得できます。
実践的な使い方
Python
# テストの成績集計
scores = {"数学": 85, "英語": 72, "国語": 90, "理科": 68, "社会": 78}
total = 0
highest_subject = ""
highest_score = 0
for subject, score in scores.items():
total += score
if score > highest_score:
highest_score = score
highest_subject = subject
average = total / len(scores)
print(f"合計: {total}点")
print(f"平均: {average:.1f}点")
print(f"最高点: {highest_subject} ({highest_score}点)")
実行結果
合計: 393点
平均: 78.6点
最高点: 国語 (90点)
まとめ
for 変数 in イテラブル:で繰り返し処理ができるrange()関数で回数指定のループが書けるenumerate()でインデックスと値を同時に取得できるbreakでループ終了、continueでスキップ- 辞書は
.items()でキーと値をペアでループできる