今回はループ処理について学んでいきましょう。ループ処理とは、同じ処理を繰り返して行う制御構造になります。ループ処理には“while”と”for”の2種類があります。それぞれの特徴をしっかりと理解していきましょう。



whileの使い方

whileはある条件を判断してループ処理を行うときに使用されます。構文の構成は次のようになります。

while (条件判定):
    処理 A
    処理 B
次の処理

条件判定がTrueの場合は処理A, 処理Bが実施されます。その後、再度条件判定が行われ、条件判定がTrueの間は処理A, Bがループされます。Falseになった時点で、whileを抜けて次の処理へと移ります。上の例では処理の部分がA, Bの2つでしたが、いくつであっても構いません。また、while中に指定した処理A, Bはネストしなければいけません。

簡単な例を見てみましょう。

i = 1
while i <= 10:
    print(i)
    i+=1
print("End")
1
2
3
4
5
6
7
8
9
10
End

まず、iに1を設定します。whileを用いてiが10以下の間はiを表示していきます。iが表示されたあとにi+=1でiをインクリメント(i=i+1)していきます。iが11になったところで条件がFalesになるので、while文を抜けてEndを表示する次の処理へと進んでいきました。

このようにある条件を満たさなくなるまで、繰り返し処理を行うことができます。

forの使い方

whileの場合はある条件中にループ処理を実施しますが、forの場合はあるグループ内にあるすべての要素を処理するようなときに利用されます。

for (変数) in (あるグループ):
    処理 A
    処理 B
次の処理

あるグループ内の要素を順番に取り出して、変数に格納します。そして処理A, Bを実施します。グループ内の要素がすべて変数に格納されると、forループが完了して次の処理へと進みます。

実際の例を見てみましょう。

a = [1,3,5,7,9,10,11,12]
for i in a:
    print(i)
print("End")
1
3
5
7
9
10
11
12
End

まず、リストa=[1,3,5,7,9,10,11,12]を準備します。そして、forを使ってリストaの各要素をiに格納して、格納されたiを出力します。すべての要素が処理されると、Endが出力されました。
aの各要素は最初から順番にiへ格納されていきます。このような処理を“イタレーション”といいます。



breakとcontinue

whileやforのループ処理中にbreakを使って処理を打ち切ることができます。また、continueを使って特定の処理のみ行うことができます。
実際の例を見ると理解しやすいと思います。

a = [1,3,5,7,9,10,11,12]
for i in a:
    print(i)
    if (i >= 10):
       break
print("End")
1
3
5
7
9
10
End

aというリストを作成した後に、a内の各要素をiに格納して、iを出力していきます。if文を用いてiが10以上の場合にbreakを用いてforのループ処理を終了しています。
もしbreakが無い場合は、iに12が格納するまでforのループ処理が続きますが、breakを使うことでiに10が格納されるとforのループ処理が終わります。
このようにbreakを効率よく使うことで、処理時間を短縮することができます。

次にcontinueの例を見てみましょう。

a = [1,3,5,6,7,9,10,11,12]
for i in a:
    if (i%2 != 0):
       continue
    if (i%3 != 0):
       continue
    print(i)
print("End")
6
12
End

リストaを作成して、forを使ってaの各要素についてループ処理を行います。ここまでは前の例と同じですね。
i%2 != 0 の意味は、iを2で割ったあまりが0でない場合, i%3 != 0 はiを3で割ってあまりが0でない という意味です。そのため、iが2と3で割り切れる場合のみiが出力されることになります。

continueはbreakと比べると使用頻度が低いです。

まとめ

今回は繰り返し(ループ) 処理の基本構文であるwhileとforの使い方について見てきました。また、ループ処理中に使うことができるbreakとcontinueについても触れました。

  •  whileの使い方
  •  forの使い方
  •  breakとcontinue

ループ処理を使う際は無限ループにはまることがないように注意してください。また、Pythonではループを使うと処理時間が長くなるため、ループを使用しない方法を検討するのも大変有効です。
ループ処理以外のPython基本はこちらにまとめてあります。