寻找一个列表的平均数

我必须在Python中找到一个列表的平均值。这是我目前的代码

l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
print reduce(lambda x, y: x + y, l)

我已经让它把列表中的值加在一起,但我不知道如何让它把它们分割开来?

l = [15, 18, 2, 36, 12, 78, 5, 6, 9]
sum(l) / len(l)
评论(8)
解决办法

在Python 3.4以上版本,你可以使用statistics.mean()

l = [15, 18, 2, 36, 12, 78, 5, 6, 9]

import statistics
statistics.mean(l)  # 20.11111111111111

在旧版本的Python上,你可以做

sum(l) / len(l)

在Python 2上,你需要将len转换为浮点数,以获得浮点数除法。

sum(l) / float(len(l))

没有必要使用reduce。它的速度更慢,在Python 3中被删除

评论(11)

既然Python有一个完美的sum()函数,为什么还要用reduce()来做呢?

print sum(l) / float(len(l))

("float() "是必要的,它可以迫使 Python 进行浮点除法。)

评论(2)