ゼロからのPython入門講座オブジェクトとリスト for文によるループ

Pythonの型とオブジェクトリストリストの操作while文を使ったリストのループ処理for文によるループ

while文を使ったリストのループ処理 では、whileループを使ってリストの要素を参照し、すべての値を加算する方法を紹介しました。

実は、こういったリストの要素を順番に参照する処理は非常によく行われるため、もっと簡単に書けるように、for 文 という、専用の文法が用意されています。

for文の書き方

for 文は、次の形式で記述します。

for 変数名 in リストオブジェクト:
    処理1
    処理2
    ...

for 文は、リストオブジェクト から要素を一つずつ順番に取り出し、それぞれの要素ごとに、for 文に続けて記述した処理を、一度ずつ実行します。変数名 には、リストオブジェクトから取り出した要素を参照する変数名を指定します。

for 文の次の行から、それぞれの要素ごとに一度ずつ実行する処理を記述します。この処理は、行の先頭にスペース4文字で インデント して記述します。

for 変数名 in リストオブジェクト:
    処理
^^^^
スペースを4文字入力

for文の例

次の例は、4つの整数のリスト [1, 2, 3, 4] から要素を一つずつ取り出し、それぞれの値の二乗を出力します。

In [1]:
values = [1, 2, 3, 4]

for value in values:
    print("valueは", value, "value*valueは", value*value)
valueは 1 value*valueは 1
valueは 2 value*valueは 4
valueは 3 value*valueは 9
valueは 4 value*valueは 16

for 文は、変数 values のリストオブジェクトから要素を一つずつ取り出し、それぞれの値ごとに次の行の print(...) を一度ずつ実行しています。

同じ処理を、while文を使ったリストのループ処理 で紹介した while 文を使ったループで書くと、次のようになります。

In [2]:
values = [1, 2, 3, 4]
len_values = len(values) # valuesの要素数を求める

index = 0 # インデックス値の初期値 0 を設定

while index < len_values: # インデックス値 < len_values の間、ループを繰り返す
    value = values[index]
    print("valueは", value, "value*valueは", value*value)
    index = index + 1 # index に 1 を加算
valueは 1 value*valueは 1
valueは 2 value*valueは 4
valueは 3 value*valueは 9
valueは 4 value*valueは 16

while文を使うと、リストオブジェクトから値を取り出すインデックス値を決める処理などを、自分で書かなければなりません。しかし、for 文を使うと、そういった点はすべてPythonが裏でやってくれるので、処理が簡単になります。

合計感染者数を for 文で求める

while文を使ったリストのループ処理 で作成した、合計感染者数を計算するプログラムは次のようなプログラムでした。

cases = [100, 125, 110, 135, 93, 95, 93]

index = 0 # インデックス値の初期値 0 を設定
len_cases = len(cases)
total = 0 # 合計感染者数の初期値 0 を設定

while index < len_cases: # インデックス値 < len_cases の間、ループを繰り返す
    cases_of_day = cases[index]
    total = total + cases_of_day # totalに、cases[index]を加算
    index = index + 1 # index に 1 を加算

print("合計感染者数は:", total)

これも、for 文を使って書き直してみましょう。

In [16]:
cases = [100, 125, 110, 135, 93, 95, 93]

total = 0 # 合計感染者数の初期値 0 を設定
for cases_of_day in cases:
    total = total + cases_of_day

print("合計感染者数は:", total)
合計感染者数は: 751

こちらも、for 文を使った方が簡潔で、処理を理解しやすくなっています。for 文を使うパターンをマスターして、効率的にプログラムを書けるようにしてましょう。

Copyright © 2001-2023 python.jp Privacy Policy python_japan
Amazon.co.jpアソシエイト
Amazonで他のPython書籍を検索