У меня есть список целых чисел, и я хочу найти максимальные и максимальные значения в списке и соответствующие им значения индексов.Pythonic способ найти наивысшие значения (и индексы) в списке
У меня есть один метод, но я чувствую, что он слишком запутан!
lst = [10,6,17,99,3,1,-3,47, 99]
max_value = (max(lst))
largest = 0.0
largest_index = 0
second_largest = 0.0
second_largest_index = 0
third_largest = 0
third_largest_index = 0
for (index,value) in enumerate (lst):
if value == largest_value:
if largest == 0.0:
largest = value
largest_index = index
elif largest != 0.0 and value > second_largest:
second_largest = value
second_largest_index= index
elif second_largest != 0.0 and value > third_largest:
third_largest = value
third_largest_index = index
elif third_largest != 0.0 and value > third_largest:
fourth_largest = value
fourth_largest_index = index
elif value > second_largest and value < largest_value:
second_largest = value
second_largest_index = index
elif value > third_largest and value < second_largest:
third_largest = value
third_largest_index = index
elif value > fourth_largest and value < third_largest:
fourth_largest = value
fourth_largest_index = index
indexlist = [largest_index, second_largest_index, third_largest_index, fourth_largest_index]
return indexlist
Поскольку список может содержать повторяющиеся значения (которые я хочу сохранить), это может быть, что четыре наибольших значений в конечном итоге «а, а, б, в». Поэтому я пытаюсь одновременно найти как максимальные значения, так и самые высокие значения второй/третьей/и т. Д.
Как я пытаюсь найти значения индекса, я не думаю, что сортировка списка поможет. Есть ли способ сохранить индекс исходного списка, чтобы он также менялся, если я сортирую список с самого высокого на самый низкий?
Редактирование для наглядности: Возможно, у меня есть [99,95, 50, 90,99] (множественные вхождения максимального значения) или [99, 70, 70, 90,50]. То, что я пытаюсь сделать, это найти самые высокие значения - потенциально, но не обязательно множественные вхождения максимального значения.
Вы хотите вернуть индекс первого обретенным наибольшего числа в списке? Сколько может быть наибольшее число? – Idos
@ 534 Сколько максимальных значений вы хотите? Это всегда одно и то же? –
также, пожалуйста, никогда не используйте «список» в качестве имени переменной, поскольку он является встроенным типом в python. –