INDEX
continueの概要
| ループの現在の周回をスキップして次の繰り返しへPython予約語 | ||
|
continue 概要 わかりやすく説明 |
||
|
continueの考え方をイメージで理解

continueの基本的な使い方
1から5までの数字を順にチェックし、偶数のときだけ continue で出力をスキップする(結果的に奇数だけを表示する)例です。
# continueを使ったループのスキップ
for i in range(1, 6):
if i % 2 == 0:
continue # 偶数の場合は、これより下の print を無視して即座に次の「i」の処理へ進む
print(i) # 結果: 1, 3, 5 だけが表示される
iが 2 や 4 のとき、continueが発動するため、その下にあるprint(i)は実行されません。
whileループでのcontinueの使用
while ループでも同様に処理をスキップできますが、変数の更新位置に注意する必要があります(詳細は注意点セクションで解説)。
# whileループでcontinueを使う
num = 0
while num < 5:
num += 1
if num == 3:
continue # numが3のときは、下のprintを飛ばして即座に「while num < 5」の条件チェックへ戻る
print(num) # 結果: 1, 2, 4, 5 が表示される(3だけ消える)
ネスト(入れ子)されたループでのcontinueの動き
continue は、「いま自分が直接属している一番内側のループ」に対してのみスキップを適用します。外側のループには影響を与えません。
# ネストされたループでcontinueを使う
for i in range(2):
for j in range(4):
if j == 2:
continue # jが2のときだけ、内側のループのprintをスキップ
print(f"i={i}, j={j}")
j == 2のタイミングだけ内側の処理がスキップされますが、jが 3 になったときや、外側のiが次の値に進む動きは邪魔されません。
continueの実践的な使用例(不正データの除外)
実務で非常によくある「リストからマイナスの値や異常値などの不要なデータをスキップし、正常なデータだけを安全に処理する」コードです。
# 負の数をスキップして正の数だけ合計する
numbers = [10, -5, 20, -3, 30]
total = 0
for num in numbers:
if num < 0:
print(f"警告: 負の数 {num} を検知したためスキップします。")
continue # 負の数は足し算せずに次のデータへ
total += num
print(f"正の数だけの合計: {total}") # 結果: 60
continueの注意点
- whileループ内での「無限ループ化」に厳重注意:
while文の中でcontinueを使う場合、変数をカウントアップ(i += 1など)するコードより手前でcontinueを走らせてしまうと、変数が永久に変化しなくなり、画面がフリーズする無限ループが発生します。# 【危険な例】永久に2から進まなくなる無限ループ i = 0 while i < 5: if i == 2: continue # i+=1 を超えて上に戻るため、iはずっと2のまま固定されフリーズします print(i) i += 1 # 【対策】continueが動く前に、必ず変数のカウントを進めておく i = 0 while i < 5: if i == 2: i += 1 # ジャンプする前にあらかじめ次へ進めておく continue print(i) i += 1 - 関数やループの外(地べた)では絶対に使えない:
continueは、forやwhileという繰り返し構文の内部に書かれて初めて意味を持つキーワードです。通常のif文の中であっても、それがループに囲まれていなければSyntaxErrorとなりプログラムが起動すらしません。
continueのよくある質問
- Q: `continue` と `break` の使い分けがいつもごっちゃになります。
- A: 「そこで試合終了にするか、次の試合に行くか」の違いです。
breakはその時点でループの壁を破壊して完全に外へ脱出します(もう繰り返しは行いません)。continueは今回の周回を諦めて、次の周回へ強制ワープします(繰り返しは継続します)。# breakの動き(3で完全ストップ) for n in range(1, 5): if n == 3: break print(n) # 結果: 1, 2 # continueの動き(3だけ飛ばして次へ) for n in range(1, 5): if n == 3: continue print(n) # 結果: 1, 2, 4 - Q: `continue` を使わずに `if-else` だけでも同じ処理が書ける気がしますが、なぜ `continue` が必要なのですか?
- A: おっしゃる通り、
if文の条件判定だけでも同じ動きは再現できます。しかし、処理が複雑になって条件が何重にも重なると、コードのインデント(字下げ)がどんどん深くなり、非常に読みづらいコード(ネスト地獄)になってしまいます。continueを使って「不要なデータを最初に弾いて早期リターンさせる」ことで、インデントを浅く保ち、コードの可読性を劇的に向上させることができます。# continueを使わない場合(インデントが深くなりがち) for data in data_list: if dataは正常: if dataは未処理: # ここにメインの長い処理を書く(右にズレて読みづらい) # continueを使った場合(スッキリして読みやすい:ガード節) for data in data_list: if dataは異常: continue if dataは処理済: continue # ここにメインの処理を書く(左側に揃って読みやすい!)
まとめ
continue は、ループ処理の流れをスマートにコントロールし、不要な処理を効率よくスキップするための重要な制御キーワードです。
- 現在の周回の残り処理をすべて無視し、次のループの先頭へと強制的に移行させる。
breakとは違い、ループそのものを中断・終了することはない。whileループで用いる際は、条件変数の更新処理までスキップしてしまわないよう、記述位置に細心の注意を払う。
大量のデータを精査するスクリプトや、条件分岐が多く複雑なループを記述する際、continue を使いこなせるとコードが格段に美しく、読みやすくなります。ぜひ積極的に活用してみてください。