Каков наиболее эффективный способ извлечения в список индексов, соответствующих n максимальным значениям другого списка, при сохранении списка, из которого мы извлекаем индексы?
Например, допустим, у нас есть следующий список индексов:
foo = [107,6,34,12,82]
Если мы запросили индексы 2 самых высоких значений списка foo, он должен вернуть нам следующий список:
bar = [0,4]
Вот то, что я запускаю сейчас, это действительно неэффективно и совсем не элегантно, и я действительно не знаю, как улучшить это:
foo = [107, 6, 34, 12, 82]
tmp = list(foo)
bar = []
no_of_indices_wanted = int(input())
for n in range(no_of_indices_wanted):
bar.append(foo.index(max(foo)))
foo.pop(foo.index(max(foo)))
foo = tmp