【python3】リストをフィルタしてから平均を求める:filter()+lambda+statistics.mean()
結論
from statistics import mean
sampleArr = [1,10,100,1000]
filterdList = list(filter(lambda x: x < 500, sampleArr))
ave = mean(sampleArr)
# 出力は 37
やりたいこと
与えられたリストの中から、「外れ値を消した上で」平均を求めたいんじゃよ。
外れ値を消すためにfilter()+lambda
filter(関数,リスト)を使うと、リストの中身を一つずつ関数に渡して、trueが返ってきた要素だけのリストを出力してくれる。(python3ではオブジェクトが返ってくるので、オブジェクトをlist()に突っ込んでリストを得る)
関数は別に定義しておいてもいいけど、簡単な条件ならlambda式を使うと一行で書ける。
sampleArr = [1,10,100,1000]
filterdList = list(filter(lambda x: x < 500, sampleArr))
# 出力は[1,10,100]
平均を一発で求めるstatistics.mean()
statisticsはpythonの標準モジュールなのでインストールは不要。importだけして使う。
from statistics import mean
# import statistics して、statistics.mean()で使っても。
sampleArr = [1,10,100,1000]
ave = mean(sampleArr)
# 出力は 277.75
参考サイト
この記事が気に入ったらサポートをしてみませんか?