Pythonで繰り返し処理を行うには for
文を利用します。ここでは for
文の扱い方について解説します。Pythonの学習をすすめる上で、for
文の理解は不可欠なポイントです。
for 文の基本的な使い方
for
文は指定した回数だけ、処理を繰り返し実行します。基本的な書式は次の通りです。
実行する処理1
実行する処理2
for
文の最後に :(コロン)を付けます。
繰り返し可能オブジェクトから要素を順番に取得して、要素の数だけブロックに記述された処理を順に実行します。処理を継続させるためには、ブロック内に記述します。
Pythonではブロックをインデントで定義しており、インデントはスペースを4つ使う事が推奨されています。
Visual Studio Codeを利用する場合は、インデントの階層毎に色分けしてくれる拡張機能があります。
・参考記事:Visual Studio Code おすすめ拡張機能
繰り返し可能オブジェクトとは、要素が並んでいるデータで、順番に次の要素が取り出せるオブジェクトのことで、文字列、リスト、タプル、辞書などが繰り返し可能オブジェクトになります。
次のサンプルプログラムでは、リストから順に要素を取り出し、繰り返し処理を実行しています。
1 2 3 4 5 6 7 8 | mylist = ['python', 'work', 'com'] for item in mylist: print(item) # python # work # com |
for
文の処理の流れは以下のようになります。
② 変数 item の値を出力
③ mylistの2番めの要素 「work」 を item に代入
④ 変数 item の値を出力
⑤ mylistの3番めの要素 「com」 を item に代入
⑥ 変数 item の値を出力
rangeを使った繰り返し処理
for
文の繰り返し回数を指定する方法として、range
関数を使用する方法があります。基本的な書式は次の通りです。
実行する処理1
実行する処理2
1 2 3 4 5 6 | for i in range(3): print(i) # 0 # 1 # 2 |
繰り返し数を範囲で指定したい場合は、range(開始, 終了)
のように2つの引数を指定します。この時数字の範囲は、開始≦ i
<終了 になります。
1 2 3 4 5 6 | for i in range(10, 13): print(i) # 10 # 11 # 12 |
さらに、1ずつ増加する連番でなく、増分を指定したい場合は、range(開始、終了、ステップ)
のように第三引数を指定します。
1 2 3 4 5 6 7 8 | for i in range(10, 20, 2): print(i) # 10 # 12 # 14 # 16 # 18 |
繰り返し処理を強制的に終了する(break)
for
文のブロックの中でbreak
が実行されると、それ以降の処理を行わずに、繰り返し処理を強制的に終了させることができます。if
文と組み合わせて使います。
・関連記事:条件分岐(if文)
実行する処理1
実行する処理2
if 条件式:
以下の場合、range
の繰り返し処理により i
が0から順に処理され、5になった時に if
文が True
となり、break
文が実行され for
文の繰り返し処理が終了します。
1 2 3 4 5 6 7 8 9 10 11 | for i in range(10): print(i) if i == 5: break # 0 # 1 # 2 # 3 # 4 # 5 |
繰り返し処理をスキップする(continue)
for
文のブロックの中で continue
が実行されると、繰り返し処理がスキップして先頭まで処理が移ります。
実行する処理1
以下の例では、i
を2で割った余りを求め、余りが0のときはcontinue
を実行して、for
文の先頭に戻ります。
・関連記事:演算子-数値計算
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | for i in range(10, 20): if i % 2 == 0: print(i, "偶数") continue print(i, "奇数") # 10 偶数 # 11 奇数 # 12 偶数 # 13 奇数 # 14 偶数 # 15 奇数 # 16 偶数 # 17 奇数 # 18 偶数 # 19 奇数 |
リストの要素とインデックスを取得(enumerate)
for
文でenumerate()
を使用することで、オブジェクトの要素と同時にインデックス番号を取得できます。
実行する処理1
次の例ではリストに対してenumerate
を使い、文字列とインデックス番号をセットで取り出しています。
デフォルトではインデックス番号は 0 から開始します。
1 2 3 4 5 6 7 8 | mylist = ['python', 'work', 'com'] for i, item in enumerate(mylist): print(i, item) # 0 python # 1 work # 2 com |
インデックス番号を1から開始するためには、enumerate
の第二引数に 1
を指定します。開始する数字は任意の数字を指定できます。
1 2 3 4 5 6 7 8 | mylist = ['python', 'work', 'com'] for i, item in enumerate(mylist, 1): print(i, item) # 1 python # 2 work # 3 com |
Pythonで繰り返し処理を行う方法を解説しました。
・関連記事:条件分岐(if文)