Python 编写中值函数
我正在尝试写一个中值函数,目前我有一个函数,它获取一个列表并对其排序,然后给出中值。但我正试图重写它,这样如果列表中有偶数个元素,它就不会打印中位数,而是打印列表中中位数介于两者之间的两个数字。这是我的密码Python 编写中值函数,python,median,Python,Median,我正在尝试写一个中值函数,目前我有一个函数,它获取一个列表并对其排序,然后给出中值。但我正试图重写它,这样如果列表中有偶数个元素,它就不会打印中位数,而是打印列表中中位数介于两者之间的两个数字。这是我的密码 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(get
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。有什么建议吗?您可以检查列表中是否有奇数个元素,然后相应地更改返回值:
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]
您告诉它在函数末尾返回两个中间数的平均值。我建议检查n%2==0或n%2==1,然后使用if-then语句确定返回的内容和返回的内容
[5,10,10,15]
?