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

calculate average in python using 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] returns 2.0 而 seq = [2, 2, 4] returns 3.0.In 事实上,return值应该相同。 你能给我一些提示,我的第二个解决方案有什么问题吗?谢谢你,抱歉我的英语不好。

首先,您缺少 reduce 的第二个参数:seq

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

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