假设我有一个数字列表:
my_list = [3, 8, 4, 2, 8, 1, 1, 2, 5, 1]
Run Code Online (Sandbox Code Playgroud)
我现在想在这个列表中找到2个最大数字的索引.所以,我尝试:
import heapq
max_vals = heapq.nlargest(2, my_list)
index1 = my_list.index(max_vals[0])
index2 = my_list.index(max_vals[1])
print index1
print index2
Run Code Online (Sandbox Code Playgroud)
在这里,无论是index1和index2是1.这是因为max_vals有8两个值,而my_list.index()只是搜索的第一个实例8.
我怎样才能得到前2值的指数在这种情况下,这样index1是1和以前一样,但index2现在是4,对应于其他8列表中?
另外,在列表中找到最大值,然后找到该值的索引似乎效率很低.有没有办法在一次清单中实现这一目标?
谢谢.
Ash*_*ary 10
您可以申请heapq.nlargest在enumerate(list)"
>>> import heapq
>>> data = heapq.nlargest(2, enumerate(my_list), key=lambda x:x[1])
>>> indices, vals = zip(*data)
>>> indices
(1, 4)
>>> vals
(8, 8)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2282 次 |
| 最近记录: |