我正在尝试编写一个中值函数,目前我有一个采用列表并对其进行排序然后给出中位数。但我试图重写它,以便如果列表具有偶数个元素,它不会打印中位数,而是列表中间的两个数字。继承我的代码
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任何建议吗?
答案 0 :(得分:1)
导入统计信息
statistics.median(数据)
答案 1 :(得分:0)
您可以检查列表是否包含奇数个元素,然后相应地更改返回值:
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)
答案 2 :(得分:0)
这里是一个例子。
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]