获取python中列表的前n个值的索引

时间:2012-10-25 14:08:25

标签: python

我有一个名单a = [5,3,1,4,10]。我需要得到列表的前两个值的索引,即5和10.是否有一个python为这种情况提供的单行程序?

2 个答案:

答案 0 :(得分:74)

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]

答案 1 :(得分:12)

只是一个笨拙的选择:

import numpy as np

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