30秒学会 Python 片段 · 2019年3月30日

30秒学会 Python 片段 – average_by

Returns the average of a list, after mapping each element to a value using the provided function.

Use map() to map each element to the value returned by fn.
Use sum() to sum all of the mapped values, divide by len(lst).

代码实现

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