我有一个清单说a = [5,3,1,4,10].我需要获得列表的前两个值的索引,即5和10.是否有一个python为这种情况提供的单行程?
Fre*_*Foo 81
sorted(range(len(a)), key=lambda i: a[i])[-2:]
Run Code Online (Sandbox Code Playgroud)
要么
sorted(range(len(a)), key=lambda i: a[i], reverse=True)[:2]
Run Code Online (Sandbox Code Playgroud)
要么
zip(*sorted(enumerate(a), key=operator.itemgetter(1)))[0][-2:]
Run Code Online (Sandbox Code Playgroud)
或(对于长名单)
zip(*heapq.nlargest(2, enumerate(a), key=operator.itemgetter(1)))[0]
Run Code Online (Sandbox Code Playgroud)
aik*_*er2 15
只是一个numpy替代品:
import numpy as np
top_2_idx = np.argsort(a)[-2:]
top_2_values = [a[i] for i in top_2_idx]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57573 次 |
| 最近记录: |