使用reduce()计算python中的平均值

时间:2015-01-27 11:05:22

标签: python lambda reduce

给定一系列数字,例如,seq = [2,4,2,4]然后使用python中的reduce和lambda计算其平均值。 我已经知道一个解决方案:

def my_mean(seq):
    return reduce(lambda x, y: x + y, seq) / float(len(seq))

然后另一个想法来到我身边:

def my_mean(seq):
    return reduce(lambda x, y: (x * seq.index(y) + y) / float(seq.index(y) + 1))

但第二种解决方案并不奏效。 坏情况:seq = [2,4,2]返回2.0,而seq = [2,2,4]返回3.0。实际上,返回值应该相同。 能不能给我一些提示,我的第二个解决方案有什么问题?谢谢,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:1)

首先,您错过了reduce的第二个参数:seq

问题是,index会找到第一个条目。如果你有重复,那将搞乱计算。

您可以使用enumerate来修复它,但它根本不值得......