continue の概要(その周回だけをスキップする)
continue は、for や while のループの「現在の周回の残り処理」を飛ばして、すぐ次の周回へ進む命令です。ループ自体は続行されます。不要な要素を素早く除外したり、条件に合わないケースを軽くスキップしたいときに使います。
基本動作と書き方(ここが重要)
現在の周回をスキップして次へ
continue が実行されると、その行以降の処理を飛ばして「次の反復」に移ります。for なら次の要素へ、while なら条件の再評価へ進みます。
for s in ["ok", "", "done"]:
if not s: # 空文字はスキップ
continue
print("処理:", s)
# 出力:
# 処理: ok
# 処理: done
Pythoni = 0
while i < 5:
i += 1
if i % 2 == 0: # 偶数はスキップ
continue
print(i)
# 出力: 1, 3, 5
Pythonbreak との違い(誤用しやすいポイント)
break は「ループを終了」、continue は「その周回だけスキップして継続」です。見つかったら終わりたい探索は break、対象外を飛ばしながら進めたい前処理は continue が適切です。
実務的な使いどころ(前処理・フィルタ・軽量ガード)
入力やデータのクレンジング(フィルタリング)
条件に合わないデータを早い段階で除外すると、残りの処理がシンプルになります。
data = ["120", "abc", "340", " 560 "]
clean = []
for s in data:
s = s.strip()
if not s.isdigit(): # 整数でないものは飛ばす
continue
clean.append(int(s))
print(clean) # [120, 340, 560]
Python高コスト処理の前に軽量チェックを置く
軽いガードで continue し、重い処理の実行回数を減らします。
def heavy(x): # 仮の重い処理
return x * x
nums = range(100)
results = []
for n in nums:
if n < 0 or n % 5 != 0: # 5の倍数だけ処理
continue
results.append(heavy(n))
Python二重ループで内側だけスキップ
内側で条件に合わない組み合わせを飛ばすと、可読性が保たれます。
for i in range(1, 4):
for j in range(1, 4):
if (i + j) % 2 == 0:
continue
print(i, j) # 奇数和のペアのみ
Python例題で身につける(定番パターン)
例題1:空行を除外してメモを記録
lines = []
print("メモを入力(空行はスキップ、'quit'で終了):")
while True:
s = input().strip()
if s.lower() == "quit":
break
if not s:
continue
lines.append(s)
print("\n".join(lines))
Python例題2:ログからノイズ行を除外
logs = ["INFO: start", "DEBUG: x=1", "ERROR: failed", "DEBUG: y=2"]
for line in logs:
if line.startswith("DEBUG"):
continue
print(line)
# INFO と ERROR だけ表示
Python例題3:値の検証と集計
inputs = ["10", "NaN", "20", "", "30"]
total = 0
for s in inputs:
if not s or not s.isdigit():
continue
total += int(s)
print(total) # 60
Python例題4:while でのスキップと更新の順序
i = 0
while i < 5:
i += 1 # 先に更新(重要)
if i == 3:
continue # 3だけ飛ばす
print(i)
# 出力: 1, 2, 4, 5
Python落とし穴とベストプラクティス(重要ポイントを深掘り)
while では「更新の前後」に注意
continue の前にカウンタや状態を更新しないと、同じ値で再評価されて無限ループになります。更新→判定→continue の順序を守るのが安全です。
使い過ぎるとロジックが散らばる
複雑な条件で continue が乱立すると追いづらくなります。早期ガードは「少数・明確」にし、複雑な判定は関数に切り出して読みやすさを保ちます。
def is_valid_row(row):
return row and row.get("price", 0) > 0
for row in rows:
if not is_valid_row(row):
continue
process(row)
Pythonfor-else と continue の関係
for-else の else は「break せず正常終了」のときだけ実行されます。continue は通常の流れなので、else の発火には影響しません。探索の「見つかったら break/見つからなければ else」の設計がわかりやすいです。
まとめ
continue は「この周回は処理不要、すぐ次へ」を実現する軽快なスイッチです。break との役割の違いを明確にし、前処理のフィルタ、軽量ガード、二重ループの整理に活用しましょう。while では更新順序を誤ると無限ループになるため、更新→判定→continue の型を徹底すること。使い過ぎで読みづらくなる兆候があれば、条件の関数化や構造の見直しでロジックを整えると、シンプルで安全なループが保てます。
