今回はループ処理について学んでいきましょう。ループ処理とは、同じ処理を繰り返して行う制御構造になります。ループ処理には“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基本はこちらにまとめてあります。
コメントを残す