この記事には、PR部分にUdemyのアフィリエイトリンクを含みますが、記事の内容は筆者が独自に作成したものです。記事の作成についてUdemy様から報酬等を受け取って作成したものではありません。
イントロダクション
今回は、Pythonの「反復処理」について学びます。
前回学習したように、Pythonに限らず、コンピュータが行う全ての処理は、順次処理・分岐処理・反復処理の3つの要素に分類できます。
今回学習するのは「反復処理」です。関連事項として、「累算代入演算子」の解説も行います。
東北大学のPythonの解説によると、反復処理は、自動化の要であり、反復をマスターしなければ、プログラミングを学ぶ価値がないとまで断言されています。それだけ重要な要素であり、便利な機能であるということです。
反復処理は、同じコードを何度も実行するための方法で、Pythonでは主に for ループと while ループの2つの方法があります。
PR
forループ
for ループは、指定回数分、同じ処理を繰り返すことを可能にします。
指定回数の繰り返し
例えば、print(Hello!)を10回繰り返したいとき、10回処理を記述するのは面倒です。指定回数分の処理を繰り返すには、以下のように記述します。
#%%
for n in range(10):
print("Hello!")
range(10)とは何だったでしょうか。0から9までの10個の数字を生成する関数のことでした。
上記コードでは、n=0 回目の処理:Hello!から、 n=9 回目の処理:Hello! が行われたことになります。nをprint()していないので出力画面には表示されず、range(繰返回数)としても問題ありません。
以下の場合はどうでしょうか。
#%%
for n in range(10):
print(n,"回目のHello!です")
# こう修正する
for n in range(1,11,1):
print(n,"回目のHello!です")
# 実用的なカウントダウン
for n in range(5,0,-1):
print(n,"秒前")
繰り返す回数を代入する変数を再利用する際には、range()の書き方に注意してください。
シーケンス型の繰り返し
リストや文字列などのイテラブル(反復可能な)オブジェクトの要素を一つずつ取り出して反復処理を行うこともできます。
#%%
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# もしforをつかわなかったら…
fruits = ["apple", "banana", "cherry"]
print(fruits[0])
print(fruits[1])
print(fruits[2])
#今回は3回で済んだが、例えば100回の反復作業となると…
fruitsリストの各要素(ここでは”apple”、“banana”、“cherry”)を順に取り出し、それをfruitという変数に格納します。そして、print(fruit)の行が各要素に対して実行され、結果として各果物の名前が順に表示されます。
whileループ
whileループは、指定した条件が真である限り、ブロック内のコードを繰り返し実行します。
#%%
i = 0
while i < 5:
i += 1
print(i)
# 変数の変動をどこに置くかで結果が変わる
i = 0
while i < 5:
print(i)
i += 1
このコードは、iが5未満である限り、i += 1とprint(i)の行を繰り返し実行します。i += 1はiの値を1増やす操作で、これによりiの値が次第に増え、最終的には5未満ではなくなります。その結果、ループは終了します。
コメントで書いたように、変数の変動をどこで起こすかにより、結果が変わるので、記載箇所を吟味する必要があります。
累算代入演算子
+= という演算子は、Pythonで累算代入演算子と呼ばれます。
変数に、特定の値を足し続けたり、引き続けたりすることを可能にします。
内部的は、変数と特定の値を演算して、再び変数に代入するという処理です。
演算子 | 例 | 内部処理 |
+= | i += 2 | i = i + 2 |
-= | i -= 2 | i = i -2 |
*= | i *= 2 | i = i * 2 |
/= | /= | i = i / 2 |
List +=[x,y] | List = List+ [x,y] |
すなわち、リストに使用すれば、リストに要素を追加して、リストを再定義できるということです。コードを短く書く便利なテクニックとして使えます。
何を言っているのかわからない方は、コード例を入力してみてください。
#%%
List = [1,2,3]
List += [4,5]
print(List)
ループの中断・スキップ (break continue)
ここからは、forループ whileループ 両方に共通する話になります。
break や continue を使用して、ループ処理中ある条件が満たされたら処理を止めるコードを書くことや、ある条件の時はその処理だけをスキップしてループを実行するコードを書くこともできます。
# break と for
for i in range(5):
if i == 3:
break
print(i)
# break と while
i = 0
while i < 5:
if i == 3:
break
print(i)
i += 1
#continue と for
for i in range(5):
if i == 3:
continue
print(i)
# continue と while
i = 0
while i < 5:
if i == 3:
i += 1 # これを書かないと、iの変動が起きずに無限ループに陥ります
continue
print(i)
i += 1
break と continue を使う際のポイントは、両者ともbreak と whileの後に書く処理が飛ばされるという点です。特に、whileの場合、breakやcontinueの前に変数の変動を付け足してあげないと無限ループが発生します。ご注意ください。
breakは飛ばされる先が、ループ処理終了後で、continueはループ処理の続きという解釈がわかりやすいかと思います。
まとめ
お疲れさまでした!
for ループと while ループを使いこなすことで、同じコードを何度も書く必要がなくなり、効率的なプログラミングが可能になります。
しかし、無限ループ(終了条件を満たさないループ)に注意する必要があります。特にwhileループを使用する際は、終了条件が必ずいつかは満たされるように設計することが重要です。
次回の記事はこちら
PR
コメント