while文を使ったリストのループ処理 では、while
ループを使ってリストの要素を参照し、すべての値を加算する方法を紹介しました。
実は、こういったリストの要素を順番に参照する処理は非常によく行われるため、もっと簡単に書けるように、for 文 という、専用の文法が用意されています。
for文の書き方¶
for
文は、次の形式で記述します。
for 変数名 in リストオブジェクト:
処理1
処理2
...
for
文は、リストオブジェクト
から要素を一つずつ順番に取り出し、それぞれの要素ごとに、for
文に続けて記述した処理を、一度ずつ実行します。変数名
には、リストオブジェクトから取り出した要素を参照する変数名を指定します。
for
文の次の行から、それぞれの要素ごとに一度ずつ実行する処理を記述します。この処理は、行の先頭にスペース4文字で インデント して記述します。
for 変数名 in リストオブジェクト:
処理
^^^^
スペースを4文字入力
for文の例¶
次の例は、4つの整数のリスト [1, 2, 3, 4]
から要素を一つずつ取り出し、それぞれの値の二乗を出力します。
values = [1, 2, 3, 4]
for value in values:
print("valueは", value, "value*valueは", value*value)
for
文は、変数 values
のリストオブジェクトから要素を一つずつ取り出し、それぞれの値ごとに次の行の print(...)
を一度ずつ実行しています。
同じ処理を、while文を使ったリストのループ処理 で紹介した while
文を使ったループで書くと、次のようになります。
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 を加算
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
文を使って書き直してみましょう。
cases = [100, 125, 110, 135, 93, 95, 93]
total = 0 # 合計感染者数の初期値 0 を設定
for cases_of_day in cases:
total = total + cases_of_day
print("合計感染者数は:", total)
こちらも、for
文を使った方が簡潔で、処理を理解しやすくなっています。for
文を使うパターンをマスターして、効率的にプログラムを書けるようにしてましょう。