我正在尝试编写一个中位数函数,目前我有一个接受列表并将其排序然后给出中位数的函数。但是我正在尝试重写它,以便如果列表中有偶数个元素,则它不会打印中位数,而是从列表中的两个数字中位数介于两者之间。这是我的代码
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,有什么建议吗?
进口统计
statistics.median(data)
您可以检查列表中元素的数量是否为奇数,然后相应地更改返回值:
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)
这里是一个例子。
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]