Python入門|for文を使った繰り返し処理の基本のイメージ画像

Python入門|for文を使った繰り返し処理の基本

  • 公開日:2018/06/19
  • 更新日:2018/10/19
  • 投稿者:n bit

Pythonで繰り返し同じ処理を行う時、for文を利用します。for文の基本中の基本で、繰り返し処理の種類、for文の記述方法、データ型のlistを使った繰り返し処理と、range関数を使ってあらかじめループ回数を指定した繰り返し処理について主に学習していきます。

  • Python

この記事は約 分で読めます。(文字)

for文による繰り返し処理

繰り返し処理とは解説するまでもないですが、「同じ処理を何度も繰り返す」ことになります。繰り返しやループですね。同じ処理をループさせるというところがポイントです。

for文は英語で「何々に向かって」といった意味があります。一概に繰り返し処理と言っても様々なタイプの繰り返し処理がありますが、for文が主に扱う繰り返しは作業のゴールがあらかじめ決まっているようなものを扱います。

日常生活で例えるならば「この10枚の書類に目を通して印鑑を押す。(チェックを付ける)」とか「この10問の問題を計算し答えを求めよ」といった感じの作業の終わりがあらかじめ決まっている繰り返し処理です。

どちらの繰り返しも10枚とか10問といった感じで繰り返し処理のゴールが決まっていますよね。このようにある決められたゴールに向かって繰り返し処理を行う場合にfor文を利用します。

日常生活における繰り返し処理

  • テスト問題を用意する
  • テスト問題を1問ずつに切り分ける
  • テスト問題を解く
  • 答えを伝える

Python:日常生活のループ処理

この日常生活の繰り返し処理をプログラミングに置き換えるとどのようになるでしょうか。10問の計算問題を順番に取得して計算結果を表示するといった流れになるのが想像できますよね。この場合であれば「用意する」を「取得」に「伝える」を「表示」変更します。

プログラミングにおける繰り返し処理

  • 10問のテスト問題を取得
  • テスト問題を1問ずつに切り分けて取得する
  • テスト問題を解く
  • 答えを表示

Python:プログラミングのループ処理

プログラムで繰り返し処理を行う場合、同じような性質を持つ要素の連続したデータが必要となります。上の事例で示すならば10問の計算問題がそれにあたります。

これはPythonのデータ型におけるlistや、tuple、dict等のデータ型が該当します。

listやdict等の連続したデータに何かしらの処理を行いたい場合は多くの場合for文を利用して実行処理を行います。listやdictとfor文はセットと考えても良いぐらいです。

for文の繰り返し処理 フローチャート

ここまでである程度お気づきの方もいると思いますがlistの中に10問の計算問題を代入し、for文でループさせることで回答し答を表示することでプログラミング処理は完了です。

これをフローチャートに書き起こすと次のようになります。

Python:for文のループ処理 フローチャート

フローチャート記号一覧

記号記号の意味説明
フローチャート記号:開始と終了開始/終了角丸の四角形でプログムの開始や終了を表す記号です。
フローチャート記号:入力と出力入力/出力平行四辺形でデータの入出力を表す記号です。
フローチャート記号:実行処理実行処理四角形でプログラムの実行処理を表す記号です。
フローチャート記号:条件分岐条件分岐菱形で条件の分岐を表す記号です。
フローチャート記号:ループ開始ループ開始ループ処理の開始を表す記号です。
フローチャート記号:ループ終了ループ終了ループ処理の終了を表す記号です。

ではこのフローチャートに書き記したプログラムの流れに従ってPythonを使った実際にコードの記述をしてみましょう。

フローチャートの基本的な扱い方について忘れてしまった方はこちらのページで解説しているので復習しておいてください。

for文の記述方法

for文の記述方法は最初に【for】を書き、その後に【任意の変数】を作成します。変数の後に【in】を記述し、listやdict等の【連続データ】を続けます。同じ行の最後にコロン【: 】をつけてfor文の1行目が完了です。

2行目以降はif文と同じでインデントを行い実行処理をブロックの中に記述していきます。

for文の基本構造

Python:for文の記述構造

inは演算子のところでその中に含まれているかどうかの判定に利用していましたが、for文と合わせて利用するときのinは、連続データの要素を1つずつ取り出してくるイメージです。

実際にfor文の基本構造を表した簡単なコードを記述してみましょう。

for var in ['Python', 'javascript', 'Rudy']:

print(var)

出力結果

Python

javascript
Rudy

こちらの処理ではlistデータの中身を1つずつ変数varに取り出しprintするだけの簡単な繰り返し処理です。これがfor文の基本的な使い方です。

if文の時と同じでfor文でも、同じインデントブロックから外れた処理に関しては繰り返しされません。次のサンプルコードでは4行目のprint関数はインデントブロックから外れているため繰り返されずfor文での繰り返し処理が終わった後に1回だけ実行されているのが確認できます。

for var in ['Python', 'javascript', 'Rudy']:

print(var)
print(var)

出力結果

Python

javascript
Rudy
Rudy

Pythonではインデントブロックが非常に重要となりますのでコード記述する時にインデントに気をつけましょう。

for文でlistを使った繰り返し処理

for文の基本をつかんだところでここからは実際によく利用されるパターンを学習していきましょう。まずは先程の基本の説明でも利用しましたがfor文とlistを使っての繰り返し処理です。

最初にフローチャートで示した10問の問題を連続で解いていく繰り返し処理をfor文とlistを使ってPythonのプログラミングコードに変換してみましょう。

まずは10問の問題をlistに格納し、for文で1問ずつ取り出しインデントブロック内でその問題を計算し表示させることでプログラミング処理は完了です。コードにすると下記のようになります。

  • ※ スペースの兼ね合いでコード内の問題数は3問にしています。
formulas = [1+1, 1+2, 1+3]

for formula in formulas:
result = formula * 5
print(result)

出力結果

10

15
20

list変数【formulas】に格納されたそれぞれの式をfor文で変数【formula】に1つずつ取り出し、インデントブロック内で【formula】の足し算×5の結果を変数【result】に代入しprint関数で出力しています。

この様なfor文とlistを使った繰り返し処理は、Pythonのプログラミング処理の中では非常によく使う形の1つです。

for文でループの回数を指定

listを使った場合はlistの中の要素数によってループ回数が決定されますが、次はあらかじめ任意でループ回数を指定してfor文の繰り返し処理を行う場合です。

for文とlistを使った繰り返し処理ほどでは無いですがこれも良く見られるパターンです。

事前に回数を指定したループ処理を行う場合は一般的にrange関数を利用します。range関数はprint関数等と同じでPythonに標準で用意されている関数です。

Note

関数と引数とは

「関数」とは「何かしらの入力に対して、決まった規則に従った出力を行う機能をもったもの」です。そして関数に渡す何かしらの入力値のことを「引数」と呼びます。

for x in range(3):

print(x)

出力結果

0

1
2

出力結果を見るとrange関数に指定している3の数字に従って【0、1、2】と3つの値が出力されています。つまり3回ループしていると言うことです。

このような動きになる理由はrange関数の出力した値を見ると理解しやすいでしょう。出力結果【0、1、2】は、【0】から始まって、連続した数字をrange関数に指定した【3】に従って3つ出力しています。このようにrange関数は連続した数字の要素を指定した数だけ作り出しているのです。

厳密には違いますが、range関数を使って[0, 1, 2]といったlistを作成し、for文で回しているとイメージすればわかりやすいでしょう。

  • range(3) ≒ [0, 1, 2]
for x in [0, 1, 2]:

print(x)

出力結果

0

1
2

先程のrange関数の時と全く同じような動きをしていますよね。考え方は同じです。

今日のdot

if文と同じくfor文もプログラミングの中では頻繁に出てくるものです。今回学習したfor文の基本パターンはしっかりとマスターしておきましょう。

今回学習した以外にもfor文でのパターンは数多くあります。後々の応用編ではそれらのパターンを1つずつ詳しく学習していきます。どのようなものを学習していくか簡単に説明しておきます。

for文でrange関数を使った繰り返し処理

指定回数のループ処理のところでrange関数を使った処理の基本を学習しましたが、range関数にはその他にも色々と機能がありそれを活用することで違った繰り返し処理を学習します。

for文でdictを使った繰り返し処理

for文とlistを使った繰り返し処理と考え方は同じなのですがdictにはkeys、values、itemsといった3つの概念がありましたよね。これら3つの要素をどのようにfor文で処理をすればよいのかを学習します。

for文とif文を組み合わせた繰り返し処理

繰り返し処理の中で条件分岐を行い処理の変更を行う場合があります。前回学習したif文と今回のfor文を組み合わせて利用し、よりプログラミングらしい複雑な処理を学習します。

for文の中でbreak文、continue文を使った繰り返し処理

for文のループ処理を途中で抜けるbreakや、途中からループの頭に戻って繰り返すcontinueなど、for文の中で使えるものがあります。ループ処理中のイレギュラー処理や強制的にループを抜ける方法などを学習します。

for文の後でelseを使った繰り返し処理

if文と同じでfor文にもelseが用意されています。elseを使ってループを正常に抜けた時とそうではなかった時の後処理について学習します。

enumerate関数を使ったインデックス付きの繰り返し処理

enumerate関数を利用することでループ中のインデックス番号を効率よく取得することができます。enumerate関数から取得したインデックス番号を使ってループ内の処理を行う方法を学習します。

多重ループを使った繰り返し処理

ループ処理中にさらに違うループ処理を行う多重ループを行いたい場合があります。多重ループは正常にコードを記述しないと無限ループ(エラー)の元になったりします。多重ループの正しい書き方や多重ループの抜け方などを学習します。