2012-10-25 13 views

risposta

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

o

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

o

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

o (per le liste lunghe)

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

Qualcuno potrebbe spiegare cosa stanno facendo questi ultimi due? – user1717828

0

Solo un NumPy alternative:

import numpy as np 

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

questo ti darà i due valori principali dell'array dato 'a'. Questo non è quello che ha chiesto OP. –

Problemi correlati