LoginSignup
5
6

More than 5 years have passed since last update.

【Python入門】continue文での繰り返しの方法とは?

Posted at

※こちらの記事は、プロスタ編集部が現在大変人気の高いPythonの文法記事を公開することで、皆様の学習にお役に立ちたい意図で投稿しております。

参考サイト:【Python入門】continue文での繰り返しの方法とは?

【Python入門】continue文での繰り返しの方法とは?

Pythonのループ文は同じ処理を何度も繰り返し行うのに便利です。そんなループ文ですが、繰り返しの中で、ある条件の時だけ実行し、それ以外の時はスキップしたい時があると思います。そんな時には、continue文を使うと便利です。今回は、continue文の使い方について説明します。

continue文は、for文などの繰り返しを行う処理の中で使われます。continue文を使うと、それ以降の処理が実行されずにスキップされ、次のループに進みます。

list1 = [1, 5, 6, 2, 4, 9, 11, 3]

for number in list1:
    if(number < 5):
        continue

    print(number)

実行結果

5
6
9
11

この例では整数のリストの中から要素を取り出し、5より大きい要素だけを表示しています。その際に、数字が5未満の場合はcontinue文を実行するようにしています。continue文が実行されると、それ以降の内容がスキップされて次のループへ進みます。そのため、最後の要素が5未満の場合は最後のprint()がスキップされ、表示されないようになっています。

単純な処理の場合は、if-else文や例外などで実現することができますが、コードが長くなると見づらく複雑なものになってしまいます。ループ文の中で処理をスキップしたいときは、continue文を使うとよいでしょう。

while文におけるcontinue文

さきほどはfor文でcontinue文を使いましたが、同じループであるwhile文でも同じようにcontinue文を使うことができます。

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

実行結果

5
6
9
11

こちらはさきほどのfor文をwhile文で置き換えたものです。少し複雑になってしまいましたが、要素が5未満の場合はcontinue文を実行し、残りの処理をすべて飛ばす、ということに関してはfor文の場合と全く同じです。

continue文で多重ループを抜ける

Pythonでは、ループ文を途中から抜ける構文としてbreak文が用意されています。

for x in range(100):
    if(x == 50):
        print('ループ文を抜けました(ループ回数:{}回)'.format(x))
        break

実行結果

ループ文を抜けました(ループ回数:50回)

このfor文ではループを100回繰り返しますが、if文でループ回数が50回に到達したらbreak文でループを抜けるようにしています。break文を使えば、ループを簡単に抜けることができます。しかし、break文の場合は1つのループを抜けることが出来ても、多重ループを抜けることはできません。

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

実行結果

1
5
7
10
10以上の数字が見つかりました
6
8
5

この例では、2次元のリストの中身を多重ループで参照し、もし10以上の要素があればそこで表示を終了するようにしています。ところが、break文では1つのループしか抜けることができません。そのため、この例では内側のループだけを抜けてしまうので全体のループが終了しません。

実は、Pythonには多重ループを抜けるための方法は用意されていません。多重ループを一気に抜けたい場合は、自分で実装を考える必要があります。方法はいくつかありますが、実はcontinue文と、if文でもおなじみのelse節を組み合わせることで多重ループを一気に抜けることができます。

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

実行結果

1
5
7
10
10以上の数字が見つかりました

この方法なら、キレイにループを抜けることが出来ました。まず、内側のfor文を回すのですが、最後にelse節があります。for文のelse節は、ループが終わった後に最後に実行されます。内側のループが終わると、else節に移動し、continue文が実行されます。continue文が実行され、最後のbreakはスキップされるのでループが続行されます。
もし、内側のループでif文が実行される(この例だと10以上の数字が見つかる)と、breakで内側のループ文を抜けるので、else節は実行されません。そのため最後のbreakが実行され、ループ全体を抜けることができます。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6