Для наборов, которые включают медиану, вы можете использовать поиск и медиану.
a = [1, 2, 3, 4, 5]
find(a == median(a))
Для наборов, которые не включают их медиану, вы должны стать умными. Сначала мы находим наименьший индекс, который больше медианы, и наибольший индекс, который меньше медианы. Здесь, конечно, я предполагаю, что набор отсортирован. Это делает все проще.
b = [1, 2, 3, 4]
(min(find(b>median(b))) + max(find(b<median(b)))) / 2
Последнее решение должно работать в обоих случаях. Обратите внимание, что индекс для несуществующей медианы совсем не является правильным индексом, и вы должны использовать значение соответствующим образом (для всего, что вы, возможно, захотите с ним сделать).