2012-10-25 17 views

Odpowiedz

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

lub

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

lub

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

lub (w przypadku długich list)

zip(*heapq.nlargest(2, enumerate(a), key=operator.itemgetter(1)))[0] 
+0

Czy ktoś mógłby wyjaśnić, co robią te dwie ostatnie osoby? – user1717828

0

Tylko numpy alternatywne:

import numpy as np 

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

ten da ci dwie najwyższe wartości danej tablicy "a". To nie jest to, o co prosił OP. –