ゼロからのPython入門講座オブジェクトとリスト

forループ

Pythonのオブジェクトリストリストの操作リストのループ処理forループ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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-2020 python.jp】 【Privacy Policy】 python_japan