Pythonでcontinueを使う方法について書いています。
continueについて解説した後に、下記のことについて書いています。
・continueを深い階層(多重)で使用したときの動作
・continueとbreakの違い
・continueとpassの違い
載せているコードはPythonの3.11.0で動作を確認しました。
continueの使い方
ループ処理の中でcontinueを使うことができます。
continueを使うと、ループの先頭に戻って、後続の処理がスキップできます。
例えば、下記のように使います。
for i in range(10):
if i == 5:
continue
print(i)
for文で変数i
が0から9までの間、10回繰り返します。
ループ処理の最初にif文で判定しています。
変数i
が「5」だったときに、continueを実行します。
ループ処理の最後にprint関数を使って、変数i
の値を出力しました。
プログラムで出力した内容を確認すると、下記にようになります。
0
1
2
3
4
6
7
8
9
変数i
が「5」がだったときには、出力されずにループの先頭に戻ります。
そのあと、変数i
がカウントアップされながら、処理が続いたことが確認できました。
continueをwhileで使う
while文でループ処理をしたときにも、continueを使うことができます。
例えば、下記のように使います。
i = 0
while i < 10:
if i == 5:
i += 1
continue
print(i)
i += 1
変数i
に0を代入して、0から9までの10回繰り返します。
if文で判定して、変数i
が「5」だったときにcontinueしています。
whileでは自動的にカウントアップされないので、カウント値をここで「+1」しています。
これがないと、無限ループになってしまうので、気をつけましょう。
if文の判定の後に、変数i
の出力処理とカウントアップをしています。
プログラムを実行すると、下記のようになりました。
0
1
2
3
4
6
7
8
9
変数i
が「5」のときには、出力されずにループの先頭に戻って、処理が続いていることが確認できました。
continueを深い階層(多重)で使うと?
continueを2重ループなど、深い階層で使ったときです。
そのときには、呼び出されたループのみに適用されます。
例えば、下記のように使います。
for i in range(5):
for j in range(5):
if j == 1 or j == 3:
continue
print(f'i:{i} j:{j}')
変数i
の箇所のループ処理が0から4までの5回繰り返されます。
変数j
の箇所のループ処理も0から4までの5回繰り返されます。
変数j
の箇所のループ処理で、j
の値が「1」または「3」だったときにcontinueするようにしました。
こうすると、値が「1」か「3」のときには、変数j
のループ処理の先頭に戻って処理を続けます。
つまり、変数i
のループは5回繰り返しますが、変数j
のループは、値が「1」か「3」のときにスキップされます。
プログラムを実行すると、下記のようになりました。
i:0 j:0
i:0 j:2
i:0 j:4
i:1 j:0
i:1 j:2
i:1 j:4
i:2 j:0
i:2 j:2
i:2 j:4
i:3 j:0
i:3 j:2
i:3 j:4
i:4 j:0
i:4 j:2
i:4 j:4
変数i
のループは4回繰り返されていますが、変数j
のループは2回スキップされました。
このように、continueは呼び出されたループ処理のみに適用されます。
continueとbreakの違い
continueはループ処理の中で呼び出すことで、呼び出されたループの先頭に戻って、後続の処理をスキップしました。
breakはループ処理の中で呼び出すと、ループ処理を抜けます。
下記の記事にソースコードを載せて比べてみているので、確認してみてください。
・Pythonのbreakの使い方!サンプル5選(ループを抜ける)
continueとpassの違い
continueは呼び出すと、呼び出されたループの先頭に戻って、後続の処理をスキップしました。
passは呼び出されても、何もしない処理になります。
同じソースコードの一部を変えて、動作を確認します。
continueのとき
下記は変数i
が0から4までカウントアップしながら、5回処理します。
for i in range(5):
if i == 3:
continue
print(i)
変数i
が3だったときにcontinueします。
そのため「3」は出力されずに、スキップされて、実行結果は下記のようになります。
0
1
2
4
passのとき
同じプログラムのcontinueの箇所をpassに変えました。
for i in range(5):
if i == 3:
pass
print(i)
passだと何もしないので、変数i
が3のときも何もしません。
実行すると、下記のように、通常通りループを回した時と同じ結果になります。
0
1
2
3
4
passについては、下記の記事を確認してみてください。
・Pythonのpass文とは?エラーパターン5選!
終わりに
今回はPythonのcontinueの使い方について書きました。
記事の内容をまとめると、下記のようになります。
・continueはwhileでも使える。カウントアップに注意する。
・2重ループなど、深い階層で呼び出したときは呼び出されたループ処理のみに適用される。
・continueとbreakは違う。breakを呼び出すと、ループ処理を抜ける。
・continueとpassは違う。passを呼び出しても何もしない。
コメント