タイトル: 繰り返しのスキップ (continue)
SEOタイトル: continue 文 完全ガイド(ループの残りをスキップして次の反復へ / Python・Java・JavaScript・C / break との違い / ネストループ)
| この記事の要点 |
|
continue とは
continue 文は、繰り返し処理の中で「この回の残りはスキップして、次の反復に進む」ための制御構文です。ループそのものは終わらないため、特定の条件のときだけ処理を飛ばしたいケースで多用されます。
| 文 | 動作 |
|---|---|
continue | 今回の反復の残りをスキップし、次の反復に進む |
break | ループ自体を終了し、ループの直後に進む |
return | 関数自体から抜ける(ループも当然抜ける) |
Python の例
# 偶数だけ表示(奇数はスキップ)
for n in range(1, 11):
if n % 2 == 1:
continue # この回の残りをスキップ
print(n)
# => 2 4 6 8 10
# while でも同じ
n = 0
while n < 10:
n += 1
if n % 3 == 0:
continue
print(n) # 3 の倍数は出ない
Java / JavaScript の例
// Java: 空白行を読み飛ばす
for (String line : lines) {
if (line.isBlank()) continue;
process(line);
}// JavaScript: null を除いて合計
let sum = 0;
for (const v of values) {
if (v == null) continue;
sum += v;
}
ネストループとラベル
continue は最も内側のループに作用します。「外側のループを continue したい」場合は、Java / JavaScript ではラベル付き continue が使えます。Python にはラベルがないため、フラグ変数や関数化で代用します。
outer: for (let i = 0; i < 5; i++) {
for (let j = 0; j < 5; j++) {
if (j === 2) continue outer; // 外側ループの次回反復へ
console.log(i, j);
}
}# Python: 関数化で「外側 continue」を実現
def process_row(row):
for cell in row:
if cell is None:
return # 行ごとスキップ
handle(cell)
for row in matrix:
process_row(row)
break との違い
for n in [1, 2, 3, 4, 5]:
if n == 3: continue
print(n)
# => 1 2 4 5 (3 だけ飛ばす)
for n in [1, 2, 3, 4, 5]:
if n == 3: break
print(n)
# => 1 2 (3 で打ち切り)
for-else との関係 (Python)
Python の for-else はbreak したかどうかでのみ else が動くか決まります。continue しても else は実行されます。
for n in range(5):
if n == 2:
continue # else に影響しない
print(n)
else:
print('完走') # 必ず実行される
for n in range(5):
if n == 2:
break # ここで打ち切ると else は出ない
print(n)
else:
print('完走') # 出ない
使いどころと書き換え
| 用途 | continue 版 | 書き換え |
|---|---|---|
| 不要要素のスキップ | if skip: continue でガード | filter / 内包表記 |
| ネスト深くしたくない | 早期 continue で平坦化。可読性が上がる | else でネストする版 |
| 例外条件の除外 | if v is None: continue | 事前にフィルタした集合を走査 |
関連
- while文 — 条件式による繰り返し
- 繰り返しの中断 (break) — ループ自体を抜ける
- for文 — 主要な繰り返し構文
- 制御構文 — 親カテゴリ