Подтвердить что ты не робот

Получить индекс верхних n значений списка в python

У меня есть список a = [5,3,1,4,10]. Мне нужно получить индекс двух верхних значений списка из 5 и 10. Существует ли один-liner, который python предлагает для такого случая?

4b9b3361

Ответ 1

sorted(range(len(a)), key=lambda i: a[i])[-2:]

или

sorted(range(len(a)), key=lambda i: a[i], reverse=True)[:2]

или

zip(*sorted(enumerate(a), key=operator.itemgetter(1)))[0][-2:]

или (для длинных списков)

zip(*heapq.nlargest(2, enumerate(a), key=operator.itemgetter(1)))[0]

Ответ 2

Просто немногочисленная альтернатива:

import numpy as np

[a[i] for i in np.argsort(a)[-2:]]