the_median
- это медианное значение, а не его индекс, поэтому integers[:the_median]
не возвращает подсписок до медианы.Вы можете использовать генератор для этого:
q1 = median(x for x in integers if x < the_median)
q3 = median(x for x in integers if x > the_median)
Обратите внимание, что было бы неправильно использовать median_index = integers.index(the_median)
.Если в исходном списке есть четное число значений, медиана не будет одним из значений, это будет среднее двух значений в середине.Таким образом, index()
не найдет медиану в списке.
Поскольку выполняется сканирование всего списка, на самом деле нет смысла сортировать список в начале функции.