Pythonの for ループには else 節を付けることができ、特定の条件が満たされなかった場合に処理を実行するのに便利です。一般的に for-else は、ループが 途中で break されなかった場合 に else の処理が実行されます。
for-else の基本構造
for item in iterable:
if 条件:
break # 条件が満たされたらループを終了
else:
# break されなかった場合のみ実行
for-else の例
- 例えば、リスト内に特定の値があるかどうかを調べ、見つかった場合に処理を止めるコードを考えます。
numbers = [1, 3, 5, 7, 9]
for num in numbers:
if num == 5:
print("Found 5!")
break # 5が見つかったらループ終了
else:
print("5 was not found.")
- 実行結果
Found 5!
break によって else は実行されません。
- リストに値がない場合 (else が実行される)
numbers = [1, 3, 7, 9]
for num in numbers:
if num == 5:
print("Found 5!")
break
else:
print("5 was not found.")
- 実行結果
5 was not found.
found == False での比較
for-else を使わずに、found 変数を使って同じ処理を実装することもできます。
numbers = [1, 3, 7, 9]
for index, num in enumerate(numbers):
if num == 10:
print(f"10が見つかりました! インデックス: {index}")
break
else:
print("10はリストにありませんでした。")
- 実行結果
10はリストにありませんでした。
for else を使う理由
- enumerate(numbers) を使うことで、index も取得できる!
- if で 10 を見つけたら break してすぐ終了。
- もし break されなかったら(10 がなかったら)else が実行される!
特に 「値が見つからなかった場合のみ実行する処理」 を書くときは、for-else のほうがスッキリ書けますね。