71

と言うリストがありますa = [5,3,1,4,10]。リストの上位 2 つの値のインデックスを取得する必要が5あり10ます[0, 4]。そのような場合に Python が提供するワンライナーはありますか?

4

2 に答える 2

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

また

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

また

import operator

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

または(長いリストの場合)、使用を検討してくださいheapq.nlargest

zip(*heapq.nlargest(2, enumerate(a), key=operator.itemgetter(1)))[0]
于 2012-10-25T14:10:51.860 に答える