【发布时间】:2014-07-29 20:35:13
【问题描述】:
我得到以下输入:
num: counts
1:5
2:4
3:8
这是数频比:
为了计算这个输入的中位数,我做了一个简单的方法,用这些元素填充一个数组
>>>l = [1,1,1,1,1,2,2,2,2,3,3,3,3,3,3,3,3]
>>>i = len(l)/2
>>> median = l[i] if not i%2 else l[i+1]
>>> median
2
这是正确的。但是,我不必要地使用数组来填充。 我想知道是否有一种数学方法可以获得给定数字的中位数及其出现频率。
和
【问题讨论】:
-
只是一个观察:您不需要 if-else 语句,只需执行 median = l[len(l)/2]
-
是否总是按顺序提供值?是否可以在提供值之前知道值的数量?这些值是否在已知的有限范围内?
-
@MooingDuck:我们可以假设输入数据是排序的。但范围未知