如何使用索引查找列表的中位数

时间:2019-03-25 01:30:02

标签: python-3.x

我正在尝试定义一个中值函数,该函数使用数字列表并从列表中返回中位数。如果列表为空,那么我想返回None。要计算中位数,我需要在对列表进行排序后找到列表的中间索引。不要使用内置功能。 SURVEY_RESULTS = [1.5,1,2,1.5,2,3,1,1,1,2]

def median(SURVEY_RESULTS):
    length = 0
    order = sorted(SURVEY_RESULTS)

我不确定现在如何使用索引来确定中位数。

1 个答案:

答案 0 :(得分:0)

这是我的实现方式:

def QuickSort(myList,start,end):
    if start < end:
        i,j = start,end
        base = myList[i]

        while i < j:
            while (i < j) and (myList[j] >= base):
                j = j - 1

            myList[i] = myList[j]

            while (i < j) and (myList[i] <= base):
                i = i + 1
            myList[j] = myList[i]
        myList[i] = base

        QuickSort(myList, start, i - 1)
        QuickSort(myList, j + 1, end)
    return myList

def median(l):
    half = len(l) // 2
    return (l[half] + l[~half])/2 # Use reverse index

SURVEY_RESULTS = [1.5, 1, 2, 1.5, 2, 3, 1, 1, 1, 2]

# Sort first
QuickSort(SURVEY_RESULTS, 0, len(SURVEY_RESULTS)-1)

result = median(SURVEY_RESULTS)

print (result)