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