リストなどのデータを順に処理するループの中で、「特定の条件に当てはまるデータだけは処理せずに飛ばしたい」という場合があります。例えば、ファイル一覧から画像ファイルだけを無視したり、無効なデータを除外したりするケースです。
このような「現在の処理を中断し、次のループ(反復)へ進む」制御を行うために、Pythonでは continue 文を使用します。
この記事では、continue 文の基本的な使い方と、ループを完全に終了させる break 文との違いについて解説します。
目次
continue 文の基本動作
continue 文が実行されると、Pythonインタプリタは現在のループの残りの処理をすべてスキップし、直ちにループの先頭に戻って、次の要素の処理(次のイテレーション)を開始します。
構文:
for 変数 in イテラブル:
if スキップしたい条件:
continue # ここで次のループへ飛ぶ
# 通常の処理(条件に該当した場合は実行されない)
具体的な使用例:特定ファイルのフィルタリング
例として、ファイル名のリストから「テキストファイル(.txt)」のみを処理し、それ以外のファイルはスキップするプログラムを作成します。
# 処理対象のファイルリスト
file_list = ["report_2024.txt", "profile.png", "data.csv", "memo.txt", "app.py"]
print("--- テキストファイルの処理開始 ---")
for filename in file_list:
# ファイル名が ".txt" で終わらない場合はスキップ
if not filename.endswith(".txt"):
print(f"[スキップ] 対象外のファイルです: {filename}")
continue
# ここから下は ".txt" の場合のみ実行される
print(f"処理中... テキストファイルを読み込みます: {filename}")
# ファイル読み込みなどの処理をここに記述
実行結果:
--- テキストファイルの処理開始 ---
処理中... テキストファイルを読み込みます: report_2024.txt
[スキップ] 対象外のファイルです: profile.png
[スキップ] 対象外のファイルです: data.csv
処理中... テキストファイルを読み込みます: memo.txt
[スキップ] 対象外のファイルです: app.py
解説
report_2024.txtは条件(.txtで終わらない)に当てはまらないため、continueは実行されず、下の「処理中…」が表示されます。profile.pngは条件に当てはまるため、[スキップ]...を表示した後、continueが実行されます。- これにより、直下の「処理中…」というコードは無視され、ループは即座に次の
data.csvの処理へと移ります。
break 文との違い
continue とよく比較されるのが break 文です。両者の動作は明確に異なります。
continue: 「今回だけ」処理を中断します。ループ自体は終わらず、次の要素の処理が続きます。 (例:このファイルは飛ばして、次のファイルを見よう)break: 「ループそのもの」を中断します。残りの要素があっても処理は完全に終了します。 (例:エラーが出たので、処理全体を中止しよう)
比較コード
numbers = [1, 2, 999, 4, 5]
print("--- continue の場合 ---")
for n in numbers:
if n == 999:
continue # 999 だけ飛ばす
print(n)
print("\n--- break の場合 ---")
for n in numbers:
if n == 999:
break # 999 が出たら終了
print(n)
実行結果:
--- continue の場合 ---
1
2
4
5
--- break の場合 ---
1
2
continue の場合は 999 の後にある 4 と 5 も表示されますが、break の場合は 999 の時点でループが完全に止まっています。
まとめ
continue文は、ループ内で特定の条件のときだけ処理をスキップし、次の回に進むために使用します。- エラーデータや対象外のデータを除外(フィルタリング)しながらループを回したい場合に有効です。
- ループ自体を終了させる
break文とは役割が異なるため、目的に応じて使い分ける必要があります。
