- 公開日:2016-12-23 最終更新日:2017-1-18
- プロナビTOP / プログラミング初心者向け技術系ノウハウ・まとめ

Pythonのループ文は同じ処理を何度も繰り返し行うのに便利です。そんなループ文ですが、繰り返しの中で、ある条件の時だけ実行し、それ以外の時はスキップしたい時があると思います。そんな時には、continue文を使うと便利です。今回は、continue文の使い方について説明します。
continue文の使い方
continue文は、for文などの繰り返しを行う処理の中で使われます。continue文を使うと、それ以降の処理が実行されずにスキップされ、次のループに進みます。
1 2 3 4 5 6 7 |
list1 = [1, 5, 6, 2, 4, 9, 11, 3] for number in list1: if(number < 5): continue print(number) |
実行結果
6
9
11
この例では整数のリストの中から要素を取り出し、5より大きい要素だけを表示しています。その際に、数字が5未満の場合はcontinue文を実行するようにしています。continue文が実行されると、それ以降の内容がスキップされて次のループへ進みます。そのため、最後の要素が5未満の場合は最後のprint()がスキップされ、表示されないようになっています。
単純な処理の場合は、if-else文や例外などで実現することができますが、コードが長くなると見づらく複雑なものになってしまいます。ループ文の中で処理をスキップしたいときは、continue文を使うとよいでしょう。
while文におけるcontinue文
さきほどはfor文でcontinue文を使いましたが、同じループであるwhile文でも同じようにcontinue文を使うことができます。
1 2 3 4 5 6 7 8 9 10 11 |
list1 = [1, 5, 6, 2, 4, 9, 11, 3] index = 0 while index < len(list1): if(list1[index] < 5): index += 1 continue print(list1[index]) index += 1 |
実行結果
6
9
11
こちらはさきほどのfor文をwhile文で置き換えたものです。少し複雑になってしまいましたが、要素が5未満の場合はcontinue文を実行し、残りの処理をすべて飛ばす、ということに関してはfor文の場合と全く同じです。
continue文で多重ループを抜ける
Pythonでは、ループ文を途中から抜ける構文としてbreak文が用意されています。
1 2 3 4 |
for x in range(100): if(x == 50): print('ループ文を抜けました(ループ回数:{}回)'.format(x)) break |
実行結果
このfor文ではループを100回繰り返しますが、if文でループ回数が50回に到達したらbreak文でループを抜けるようにしています。break文を使えば、ループを簡単に抜けることができます。しかし、break文の場合は1つのループを抜けることが出来ても、多重ループを抜けることはできません。
1 2 3 4 5 6 7 8 |
list1 = [ [1,5,7], [10,3, 4], [6, 8, 5]] for list1_item in list1: for item in list1_item: print(item) if(item >= 10): print('10以上の数字が見つかりました') break |
実行結果
5
7
10
10以上の数字が見つかりました
6
8
5
この例では、2次元のリストの中身を多重ループで参照し、もし10以上の要素があればそこで表示を終了するようにしています。ところが、break文では1つのループしか抜けることができません。そのため、この例では内側のループだけを抜けてしまうので全体のループが終了しません。
実は、Pythonには多重ループを抜けるための方法は用意されていません。多重ループを一気に抜けたい場合は、自分で実装を考える必要があります。方法はいくつかありますが、実はcontinue文と、if文でもおなじみのelse節を組み合わせることで多重ループを一気に抜けることができます。
1 2 3 4 5 6 7 8 9 10 11 |
list1 = [ [1,5,7], [10,3, 4], [6, 8, 5]] for list1_item in list1: for item in list1_item: print(item) if(item >= 10): print('10以上の数字が見つかりました') break else: #これはifではなく内側のfor文のelseなのに注意 continue break |
実行結果
5
7
10
10以上の数字が見つかりました
この方法なら、キレイにループを抜けることが出来ました。まず、内側のfor文を回すのですが、最後にelse節があります。for文のelse節は、ループが終わった後に最後に実行されます。内側のループが終わると、else節に移動し、continue文が実行されます。continue文が実行され、最後のbreakはスキップされるのでループが続行されます。
もし、内側のループでif文が実行される(この例だと10以上の数字が見つかる)と、breakで内側のループ文を抜けるので、else節は実行されません。そのため最後のbreakが実行され、ループ全体を抜けることができます。