Форум сайта python.su
Необходимо найти в списке медиану.
Я тут сам написал что-то:
def checkio(data): data.sort() res = 0.0 if len(data) / 2 > 0: res = data[int(len(data) / 2)] else: res = (data[int(round(len(data) / 2 - .5))] + data[int(round(len(data) / 2))])/2 return res
[3, 6, 20, 99, 10, 15]
(data[int(round(len(data) / 2 - .5))] + data[int(round(len(data) / 2))])/2
Отредактировано kozlo22 (Дек. 2, 2013 14:26:27)
Офлайн
def median(data): data = sorted(data) return data[len(data)//2]
kozlo22откуда 12,5 возьмется ?
то вместо 12.5 выводит 15.
Отредактировано Singularity (Дек. 2, 2013 14:36:31)
Офлайн
>>> import numpy as np >>> np.median([3, 6, 20, 99, 10, 15]) 12.5
Отредактировано bismigalis (Дек. 2, 2013 16:50:41)
Офлайн
Singularity
ну если запустить мой скрипт и вывести отсортированный список, то можно увидеть это (скриншот прикреплен).
(10+15)/2 = 12.5
Или я свернул когда-то не туда?..
Отредактировано kozlo22 (Дек. 2, 2013 16:53:49)
Прикреплённый файлы:
Screenshot_2013-12-02-17-41-08.png (14,0 KБ)
Офлайн
bismigalis
спасибо, но мне хочется понять где ошибка в моем коде.
Офлайн
kozlo22здесь
спасибо, но мне хочется понять где ошибка в моем коде.
kozlo22
len(data) / 2 > 0
len(data) % 2
Отредактировано bismigalis (Дек. 2, 2013 17:08:29)
Офлайн
bismigalis
действительно.
Я так и думал, что затупил где-то на ровном месте.
Спасибо Вам. ;-)
Офлайн
Еще вопрос:
Почему при передаче списка вида
[12,33,7,75,91,22,74,5,51,26,55,32]
Отредактировано kozlo22 (Дек. 3, 2013 09:02:59)
Офлайн
kozlo22
оборачивайте список к теги, иначе движок форума не воспринимает его как вы задумали. И по сему ваш вопрос не ясен
Офлайн
kozlo22если длина списка четная, то здесь
Еще вопрос…
res = (data[int(round(len(data) / 2 - .5))] + data[int(round(len(data) / 2))])/2
Офлайн