gpt4 book ai didi

Python 列出 : indices of heapq. nlargest,列表中有重复值

转载 作者:太空狗 更新时间:2023-10-30 00:45:04 24 4
gpt4 key购买 nike

假设我有一个数字列表:

my_list = [3, 8, 4, 2, 8, 1, 1, 2, 5, 1]

我现在想找到这个列表中 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

这里,index1index2都是1。这是因为 max_vals 对两个值都有 8,而 my_list.index() 只搜索 8< 的第一个实例.

在这种情况下,如何获得前 2 个值的索引,例如 index1 和以前一样是 1,但是 index2 是现在 4,对应列表中的其他 8

附带说明一下,在列表中找到最大值,然后再找到该值的索引似乎效率很低。有没有一种方法可以在一次扫描列表中实现这一点?

谢谢。

最佳答案

您可以在 enumerate(list) 上应用 heapq.nlargest

>>> import heapq
>>> data = heapq.nlargest(2, enumerate(my_list), key=lambda x:x[1])
>>> indices, vals = zip(*data)
>>> indices
(1, 4)
>>> vals
(8, 8)

关于Python 列出 : indices of heapq. nlargest,列表中有重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22076427/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com