- 公開日:2017-8-24 最終更新日:2017-8-23
- プロナビTOP / プログラミング初心者向け技術系ノウハウ・まとめ

はじめに
何度も繰り返したい処理はありませんか?
前回は制御構造としてif文を紹介しましたが、制御構造にはループ制御もあります。
つまり繰り返し処理のことです。代表的なループ構文にはwhileとforの2つがあり、異なる特徴を持っています。
このため、特徴を理解して使い分ける必要があります。
この記事では、Python初心者の方向けに、Pythonのループ構文についてお伝えしていきます。
用途に応じて、適切なループ構文を使い分けましょう。
基本的なwhile文の使い方
まずは、while文から説明していきます。while文は、主にループ回数が事前にわからない場合に使用するループ構文です。
たとえば、特定の状態になるまで繰り返す場合や同じ処理を永遠と繰り返す場合です。
while構文は、次のようになります。
例:
|
1 2 3 4 |
num = 5 while num < 1000: num *= 2 print(num) |
この例では、数値numが1000以上になるまで、numを2倍してコンソールに出力します。
注意しなければならないのは、if文とは違い継続条件を指定することです。
つまり、条件が成立している(Trueと判定される)間だけ処理が実行されるということです。
継続条件の判定はループ開始前に行われるため、条件によっては1度も処理が実行されません。
そして、ループの度に継続条件が判定されます。終了条件と継続条件を間違わないようにしましょう。
基本的なfor文の使い方
次は、よく使われるfor文を説明していきます。
for文は、リストやタプル、セット、ディクショナリなどのシーケンスをループ処理するための構文です。
プログラムではシーケンスの要素を個別に処理することが多々ありますので、しっかり覚えておきましょう。
まずは、リストを扱う場合のfor文からみていきます。
例:
|
1 2 |
for item in [1, 2, 3]: print(item) |
for文で最初に指定する変数(例ではitem)は任意の名前にできます。
それから、in句の後にループさせるリストを指定します。
この例ではリテラル値を指定していますが、リスト変数でもOKです。
ここで指定したリストの要素数だけループが回され、各ループで変数に要素が割り当てられますので、ループ内でなんらかの処理を行います。
次は、タプルの場合です。
例:
|
1 2 |
for item in (“Taro”, 17, True): print(item) |
タプルの場合も、リストを扱う場合と特段変わりありません。
また、セットの場合も同様です。
例:
|
1 2 |
for item in {“Cat”, “Dog”, “Bird”}: print(item) |
セットの場合は順序がないため、ループ順が変化することに注意して下さい。
最後にディクショナリの場合をみてみましょう。ディクショナリにはキーと値があるため、それぞれループ方法が異なります。
まず、キーをループする場合です。
例:
|
1 2 |
for key in {1:“Cat”, 2:“Dog”, 3:“Bird”}: print(key) |
キーの場合はセットの場合と同様です。一方、値の場合は次のように少し異なります。
例:
|
1 2 |
for value in {1:“Cat”, 2:“Dog”, 3:“Bird”}.values(): print(value) |
値をループする場合には、例のようにディクショナリのvaluesメソッドを呼び出して値のセットを取得する必要があります。
また、キーと値を同時にループさせる場合には次のようにします。
例:
|
1 2 |
for key, value in {1:“Cat”, 2:“Dog”, 3:“Bird”}.items(): print(“{0}:{1}”.format(key, value)) |
キーと値を同時にループする場合には、例のように2つの変数をカンマ区切りで指定する必要があります。
さらに、ディクショナリのitemsメソッドを呼び出さなければいけません。
他のシーケンスについても同様の方法でループ処理できます。
応用的なループ制御について
ときにはループを途中で終了したり、次のループに移ったりしたい場合があります。
ループを途中で終了したい場合には、次のようにします。
例:
|
1 2 3 |
for num in [1, 2, 3, 4, 5]: if num == 4: break print(num) |
ループを途中で終了するには、breakを使います。
一般的にif文と組み合わせて使い、特定の条件でループを終了するにようにします。
例では、4回目のループで終了します。
次は、ループ処理をスキップする方法をみてみましょう。
例:
|
1 2 3 |
for num in [1, 2, 3, 4, 5]: if num % 2 == 0: continue print(num) |
現在のループをスキップして、次のループに進むにはcontinueを使います。
例では偶数のループがスキップされ、奇数のみ出力されます。
どちらの方法もwhile文でも同様に使えます。
まとめ
while文とfor文の2つのループ構文について理解できましたか?
while文はループ回数が決まっていない場合に使い、for文はシーケンスの要素を処理するために使います。
for文ではシーケンスをインデックスとしてループするなど、汎用的な使い方もできますので、いろいろ工夫してみましょう。
シーケンス要素のループはよく行いますので、しっかり覚えておいて下さい。




































