以下は、ネスト(入れ子)されたループの中で continue がどう動くかを、初心者向けに「完全テキスト図」で説明したものです。
読みやすくするため、外側ループ:i、内側ループ:j の例で示します。
まずコード例(とても短い)
for i in range(1, 4): # 外側ループ: i = 1,2,3
for j in range(1, 4): # 内側ループ: j = 1,2,3
if j == 2:
continue # ← ここに注目
print(i, j)
Pythonテキスト図解:continue は 「入っているループだけ」 に効く
図の読み方
- → は処理の流れ
- × はその回の残り処理のスキップ
- ⟳ はループ先頭へ戻る
- 外側ループは 大きい枠、内側ループは 小さい枠
全体のイメージ(俯瞰図)
外側ループ(i)
└─ 内側ループ(j)
├─ j == 1 → 通常処理
├─ j == 2 → continue(内側ループだけスキップ → jループの次へ)
└─ j == 3 → 通常処理
(この内側ループが終わると、次の i に進む)
詳細な流れ(ステップごとの図解)
i = 1 のとき
i=1
┌───────────────────────────────────┐
│ j=1 → 条件(j==2?) false → print(1,1) │
│ j=2 → 条件(j==2?) true → continue → × print → ⟳ j=3へ │
│ j=3 → 条件(j==2?) false → print(1,3) │
└───────────────────────────────────┘
(結果: (1,1), (1,3) が出力される)
i = 2 のとき
i=2
┌──────────────────────────────┐
│ j=1 → print(2,1) │
│ j=2 → continue → × print → ⟳ │
│ j=3 → print(2,3) │
└──────────────────────────────┘
i = 3 のとき
i=3
┌──────────────────────────────┐
│ j=1 → print(3,1) │
│ j=2 → continue → × print → ⟳ │
│ j=3 → print(3,3) │
└──────────────────────────────┘
continue が効いているのは 内側ループだけ
図で強調すると:
for i in ...:
for j in ...:
if j == 2:
continue ← これが効くのは「jループ」だけ
外側の i を飛ばしたりスキップしたりは しません。
「どのループに効くのか」視覚化した図
外側ループ(i)
┌───────────────────────────────────────┐
│ 内側ループ(j) │
│ ┌───────────────────────────────┐ │
│ │ if j == 2: continue ← ★ここ │ │
│ └───────────────────────────────┘ │
│ ↑↑↑ continue はここ(内側)だけ │
└───────────────────────────────────────┘
まとめ(初心者向け)
continueは 「いま書かれているそのループだけ」 をスキップします- ネストされていても、外側ループには影響しません
- 今いるループの「その1回分」をスキップして、同じループの先頭へ戻るだけです
