はじめに
Python では、map() 関数を使って、リストの各要素に関数を適用し、変更された要素を持つ新しいリストを返すことができます。また、sum() 関数を使って、リストのすべての要素を合計することもできます。このチャレンジでは、与えられた関数を使って各要素を値にマッピングした後、これら 2 つの関数を組み合わせてリストの平均を計算します。
マッピングされたリストの平均
average_by(lst, fn = lambda x: x) という名前の関数を書きます。この関数は、リスト lst と関数 fn を引数とします。関数 fn は、リストの各要素を値にマッピングするために使用されます。その後、関数はマッピングされた値の平均を計算して返します。
fn 引数が提供されない場合、関数はデフォルトの同一関数を使用し、それは単に要素自体を返します。
あなたの関数は以下の要件を満たす必要があります。
map()を使用して各要素をfnによって返される値にマッピングします。sum()を使用してすべてのマッピングされた値を合計し、len(lst)で割ります。- デフォルトの同一関数を使用するには、最後の引数
fnを省略します。
関数のシグネチャ:def average_by(lst, fn = lambda x: x) -> float:
def average_by(lst, fn = lambda x: x):
return sum(map(fn, lst), 0.0) / len(lst)
average_by([{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }], lambda x: x['n'])
## 5.0
まとめ
このチャレンジでは、与えられた関数を使って各要素を値にマッピングした後、map() 関数と sum() 関数を使ってリストの平均を計算する方法を学びました。また、Python 関数でデフォルト引数を使う方法も学びました。