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]