我试图找到列表中四个最高值的索引。
到目前为止我的代码找到了最高的代码:
for i, j in enumerate(Si['S1']):
if j == max(Si['S1']):
numberofhighest=i
但我不知道如何在我的列表中排序或删除值的情况下找到四个最高值。你能帮帮我吗?
答案 0 :(得分:3)
如果您愿意使用标准库,heapq.nlargest
和enumerate
的组合应该可以正常使用。
设定:
>>> from operator import itemgetter
>>> from heapq import nlargest
>>> a = [6, 2, 8, 9, 0, 4, 3, 7, 1, 5] # example
获取四个最大元素及其索引:
>>> nlargest(4, enumerate(a), itemgetter(1))
[(3, 9), (2, 8), (7, 7), (0, 6)]
这将为您提供四个最大值的(index, value)
元组。要提取索引,您可以使用列表推导或对map
的其他调用。
>>> [index for index, value in nlargest(4, enumerate(a), itemgetter(1))]
[3, 2, 7, 0]
>>> map(itemgetter(0), nlargest(4, enumerate(a), itemgetter(1)))
[3, 2, 7, 0]
在Python3中,您需要手动构建一个来自map的返回值的列表,即list(map(...))
。