Pythonでリストの平均を求める方法|sum()とlen()の使い方を解説

Pythonでリスト内の数値の平均を求めるには、sum()で合計を計算し、len()で取得した要素数で割ります。

平均を求める基本の式は、次のとおりです。

平均 = 数値の合計 ÷ 数値の個数

Pythonには複数の方法がありますが、まずは平均の仕組みが分かりやすいsum()とlen()の組み合わせを覚えるのがおすすめです。

この記事の内容

sum()とlen()でリストの平均を求める

次のリストに入っている点数の平均を求めてみましょう。

scores = [70, 80, 90]

average = sum(scores) / len(scores)

print(average)

実行結果は次のとおりです。

80.0

このコードでは、次の順番で平均を計算しています。

合計:70 + 80 + 90 = 240
個数:3
平均:240 ÷ 3 = 80

sum(scores)はリスト内の数値の合計、len(scores)はリストに入っている要素の個数を返します。

したがって、sum(scores) / len(scores)で「合計÷個数」を計算できます。

平均の結果が小数になる理由

先ほどの実行結果は、整数の80ではなく小数の80.0でした。

Pythonでは、/を使った割り算の結果は基本的にfloat型の小数になります。割り切れる計算でも、小数として返されます。

numbers = [10, 20]

average = sum(numbers) / len(numbers)

print(average)
print(type(average))

実行結果は次のとおりです。

15.0
<class 'float'>

平均には小数が含まれることがあるため、この動作は自然です。整数に変換すると小数部分が失われるため、特別な理由がなければそのまま扱うのがよいでしょう。

小数を含むリストも平均を計算できる

リストに小数が入っている場合も、同じ方法で平均を求められます。

temperatures = [22.5, 23.0, 24.5]

average = sum(temperatures) / len(temperatures)

print(average)

実行結果は次のとおりです。

23.333333333333332

割り切れない場合は、小数点以下が長く表示されることがあります。

表示する桁数を整えたい場合は、round()を使用します。

temperatures = [22.5, 23.0, 24.5]

average = sum(temperatures) / len(temperatures)

print(round(average, 2))

実行結果は次のとおりです。

23.33

round(average, 2)は、小数点以下2桁を目安に丸める指定です。

空のリストではエラーになる

平均を計算するときに注意したいのが、要素の入っていない空のリストです。

numbers = []

average = sum(numbers) / len(numbers)

print(average)

空のリストではsum(numbers)が0、len(numbers)も0になります。そのため、0を0で割ろうとしてZeroDivisionErrorが発生します。

空のリストが渡される可能性がある場合は、計算前に要素が入っているか確認します。

numbers = []

if numbers:
    average = sum(numbers) / len(numbers)
    print(average)
else:
    print("平均を計算できる数値がありません")

Pythonでは、空のリストは条件式の中でFalseとして扱われます。if numbers:と書くことで、要素が1つ以上ある場合だけ平均を計算できます。

statistics.mean()で平均を求める

Pythonの標準ライブラリにあるstatisticsモジュールを使う方法もあります。

from statistics import mean

scores = [70, 80, 90]

average = mean(scores)

print(average)

実行結果は次のとおりです。

80

mean()は平均を求めるための関数なので、コードを見ただけで目的を理解しやすいのが特徴です。

ただし、空のリストを渡すとStatisticsErrorが発生します。mean()を使用する場合も、リストが空になる可能性があるなら事前の確認が必要です。

どちらの方法を使えばよいか

平均を求める主な方法は、次の2つです。

  • 平均の計算方法をそのままコードにしたい:sum(numbers) / len(numbers)
  • 平均を求める目的を簡潔に表したい:mean(numbers)

プログラミングを始めたばかりなら、まずsum()とlen()を使う方法を試すと、平均がどのように計算されているか理解しやすくなります。

実際のプログラムでは、コードの読みやすさを重視してmean()を選ぶこともできます。

まとめ

Pythonでリストの平均を求める基本的な書き方は、次のとおりです。

numbers = [10, 20, 30]
average = sum(numbers) / len(numbers)

print(average)

sum()で合計を求め、len()で取得した要素数で割ることで平均を計算できます。

空のリストでは0による割り算が発生するため、必要に応じてif numbers:で要素の有無を確認してください。平均を簡潔に求めたい場合は、statisticsモジュールのmean()も利用できます。

この記事が役に立ったらシェア
  • URLをコピーしました!
この記事の内容