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

リストのループ処理

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

リスト では、伝染病の毎日の感染者数を一週間分まとめたデータで、cases というリストオブジェクトを作成しました。

In [45]:
cases = [100, 125, 110, 135, 93, 95, 93]
print(cases)
[100, 125, 110, 135, 93, 95, 93]

この、感染者数リストの感染者数から、この一週間の合計感染者数を求めてみましょう。

合計感染者数は、次の手順で求めます。この手順は、リストなどのデータを処理する場合によく使われる、非常に重要なパターンです。しっかり理解しておいてください。

  1. 変数 index に 、初期値として 0 を設定します。index は、リストの要素を参照する インデックス値 として使用します。

  2. 変数 total に、初期値として 0 を設定します。total は、合計感染者数として使用します。

  3. whileループ を開始し、変数 index が 感染者数リストの最大インデックス値より小さいか等しい間、次の処理を繰り返します。
    感染者数リストの要素数は7ですから、その最大インデックス値は、7 - 1 = 6 となります。最大インデックス値の求め方は、インデックス を参照してください。

    1. 先頭から index 日目の感染者数(cases[index])を、cases から取り出します。
    2. 変数 total に、その日の感染者数を加算します
    3. 変数 index1を加算し、次の日の感染者数を参照するようにします。
  4. 変数 totalを出力します。

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

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

while index < 7: # インデックス値 < 7 の間、ループを繰り返す
    cases_of_day = cases[index]
    total = total + cases_of_day # totalに、cases[index]を加算
    index = index + 1 # index に 1 を加算
    
print("合計感染者数は:", total)
合計感染者数は: 751

len()関数

ここでは、リストオブジェクト cases の要素数を一週間分と決めて、7件のデータだけを集計するようにプログラムを書いてきました。しかし、これでは、3日分のデータを集計するときや、10日分のデータを集計するときには、わざわざプログラムを書き直さなくてはいけなくなってしまいます。

それではあまりにも面倒ですので、リストオブジェクトの要素数を求める関数 len() を使って、リストオブジェクトの要素数がいくつでも、すべての要素を集計するようにしてみましょう。

In [12]:
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)
合計感染者数は: 751

新らしく、インデックスの最大値を計算する

len_cases = len(cases)

という代入文が追加されました。

関数 len() は、引数にリストオブジェクトを指定すると、その要素数を返してくれる関数です。次の例は、要素数が4のリスト [1,2,3,4] を 指定してlen()を呼び出し、戻り値として正しく 4 を受け取っています。

In [13]:
values = [1,2,3,4]  # 要素数4のリスト
print(len(values))
4

len() を利用した場合には、データの数に関わらず、常に正しく結果を計算できます。プログラムを書くときには、できるだけこのような柔軟性を得られるように気をつけたほうが、より良いプログラムができあがります。



【Copyright © 2001-2020 python.jp】 【Privacy Policy】 python_japan