使用 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
来修复它,但这根本不值得..
给定一个数字序列,例如,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
来修复它,但这根本不值得..