2012-10-25 57 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

有人可以解釋最後兩個人在做什麼? – user1717828

0

僅有numpy的替代:

import numpy as np 

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

這一個會給你給定數組'a'的前兩個值。這不是OP要求的。 –