Оператор деления по полу применяется к списку в Python

def median(numbers):
    numbers.sort() 
    if len(numbers) % 2:
        # if the list has an odd number of elements,
        # the median is the middle element
        middle_index = int(len(numbers)/2)
        return numbers[middle_index]
    else:
        # if the list has an even number of elements,
        # the median is the average of the middle two elements
        right_of_middle = len(numbers)//2 
        left_of_middle = right_of_middle - 1
        return (numbers[right_of_middle] + numbers[left_of_middle])/2

Примеры результатов:

>>> x=[5,10,15,20]
>>> median(x)
12.5
>>> x=[17,4,6,12]
>>> median(x)
9.0
>>> x=[13,6,8,14]
>>> median(x)
10.5

Я запустил эту функцию, и она отлично работает. Вначале было трудно понять результаты, но в конце концов я понял!

Однако я не понимаю, почему только первый результат такой, каким он должен быть. Я имею в виду результат является средним из двух средних чисел в списке.

Надеюсь, вы понимаете, что я учусь самостоятельно, а иногда это нелегко.

3 ответа

Решение

Ваша функция работает только в первом примере, потому что отсортирован только первый список. Сортировать другой список или сортировать внутри функции.

Просто из-за этой строки:

numbers.sort() 

так, [17,4,6,12] становится [4,6,12,17] который его медиана 9

Вы, вероятно, спрашиваете:

Почему медиана отличается от среднего?

Ответ таков:

Медиана - это значение, отделяющее верхнюю половину выборки данных, совокупность или распределение вероятностей от нижней половины.

(Из Википедии.)

Для набора данных термины среднее арифметическое, математическое ожидание и иногда среднее используются как синонимы для обозначения центрального значения дискретного набора чисел: в частности, суммы значений, деленной на количество значений.

(Из Википедии.)

Эти два значения могут быть равны, но в целом они разные:

Если у вас 10 бедняков и 1 миллионер, среднее значение будет очень высоким, но медиана (зарплата 6-го самого бедного человека) будет по- прежнему очень низкой.

Другие вопросы по тегам