要約
本日は、Pythonで以下を学びました。
繰り返しの制御
・繰り返しの強制終了
・繰り返しのスキップ
・break 文とcontinue 文の使い分け
#break 文を使った例
data_list = [1, 2, 3]
for num in data_list:
if num == 2:
break
print(num)
#continue 文を使った例
data_list = [1, 2, 3]
for num in data_list:
if num == 2:
continue
print(num)
はじめに
前回は「for 文」について学びました。
今回は、繰り返しの制御について学習します。
繰り返しの制御
繰り返しの強制終了
繰り返しの途中で目標に達すると、決して成立することのないif文を延々と実行してしまいます。
不要な繰り返しはリソースの無駄遣いで、コンピュータにも多大な負荷をかけてしまします。
そのような場合、繰り返しはbreak 文によって途中で強制的に終了させることができます。
break 文のサンプルを作ってみましょう。
#break文を使って、繰り返しを強制終了する
ages = [28, 50, 8, 20, 78, 25, 22, 10, 27, 33] #対象データ
num = 5 #目標の抽出数
samples = list()
for data in ages:
if 20 <= data < 30:
samples.append(data)
if len(samples) == num:
break
print(samples)

リストsamplesの要素数が抽出の目標である5になればbreak 文が実行され、forブロックを抜けて繰り返しが終了します。
これにより余計な繰り返しをなくすことができます。

break は必須スキルですね!
繰り返しのスキップ
break 文は繰り返しを途中で中止する命令でした。
繰り返しそのものではなく、現在の回のみ処理をスキップして次の回のループを継続したい場合、
continue 文を使います。
continue 文のサンプルを作ってみましょう。
#continue文を使って、繰り返しをスキップする
ages = [28, 50, 'ひみつ', 20, 78, 25, 22, 10, '無回答', 33]
samples = list()
for data in ages:
if not isinstance(data, int):
continue
if data<20 or data >=30:
continue
samples.append(data)
print(samples)


if 文で書くこともできますが、インデントの深いコードは読みにくいだけでなく、分岐の対応関係を把握しづらいため、
処理内容の理解が難しくなってしまいます。
可視性の低いコードはメンテナンスの難易度が高くなり、不具合を起こしやすくなります。
一方、continue 文を使用した文は見た目もスッキリし、ひと目で構造を把握することができます。
なお、isinstance 関数の構文は次の通りです。
isinstance 関数
isinstance(データ, データ型)
※データがデータ型と一致したらTrueに置き換わる。
※データ型にはint、str、boolなどを指定できる。
break 文と continue 文
break 文とcontinue 文は、どちらもループを中断しますが、中断する対象が異なります。
break 文は、書かれた繰り返しのブロックを即座に中断します。
while 文やfor 文による繰り返しをすぐに中断したい場合に利用すると良いでしょう。
continue 文は、現在のループの周回を中断して、同じ繰り返しの次の周回に進みます。
この周回だけを中断し、繰り返し自体は続けたい場合に利用します。



break 文とcontinue 文の特性を理解して、使い分けする必要がありますね!
まとめ
本日は、Pythonで以下を学びました。
繰り返しの制御
・繰り返しの強制終了
・繰り返しのスキップ
・break 文とcontinue 文の使い分け
#break 文を使った例
data_list = [1, 2, 3]
for num in data_list:
if num == 2:
break
print(num)
#continue 文を使った例
data_list = [1, 2, 3]
for num in data_list:
if num == 2:
continue
print(num)


次回は「関数」を扱っていきます。



break とcontinue を変えるだけで結果が変わってますね!
きちんと使い分けが必要そうですね!