我正在尝试编写一个中值函数,目前我有一个可以获取列表并对其进行排序,然后给出中值的函数。但我正在尝试重写它,这样如果列表中有偶数个元素,它就不会打印中位数,而是打印中位数介于列表中的两个数字。下面是我的代码
def getMedian(A):
A=sorted(A)
n=len(A)
m=n-1
return (A[int(n/2)]+A[int(m/2)])/2
def main():
myList=[3,5,9,3,11]
print(getMedian(myList))
myList=[3,9,11,5]
print(getMedian(myList))
main()目前它输出5,然后是7,但我正在尝试让它输出5,然后是5,9,有什么建议吗?
发布于 2015-12-01 18:27:24
导入统计信息
Statistics.median(数据)
发布于 2015-12-01 17:49:37
您可以检查列表是否包含奇数个元素,然后相应地更改返回值:
def getMedian(A):
A = sorted(A)
n = len(A)
m = n-1
if n%2 == 1:
return (A[int(n/2)]+A[int(m/2)])/2
else:
return A[int(m/2)], A[int(n/2)]
def main():
myList = [3,5,9,3,11]
print(getMedian(myList))
myList = [3,9,11,5]
print(getMedian(myList))
main()输出:
>>>
5
(5, 9)发布于 2019-12-04 19:20:18
下面是一个这样做的例子。
def getMedian(A):
A.sort()
mid = len(A) // 2
return [[A[~mid], A[mid]], (A[mid] + A[~mid]) / 2][len(A) % 2]
def main():
myList = [3, 5, 9, 3, 11]
print(getMedian(myList))
myList = [3, 9, 11, 5]
print(getMedian(myList))
main()输出
5.0
[5, 9]https://stackoverflow.com/questions/34017132
复制相似问题