2012-10-25 11 views

答えて

51
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] 
+0

誰かが最後の2人が何をしているのか説明できますか? – user1717828

0

ただ、numpyの代替:

import numpy as np 

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

これは与えられた配列 'a'の上位2つの値を与えます。これは、OPが求めたものではありません。 –

関連する問題