ゼロからのPython入門講座オブジェクトとリスト while文を使ったリストのループ処理

Pythonの型とオブジェクトリストリストの操作while文を使ったリストのループ処理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: # インデックス値 < 感染者数リストの要素数の間、ループを繰り返す
    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-2023 python.jp Privacy Policy python_japan
Amazon.co.jpアソシエイト
Amazonで他のPython書籍を検索