我有一个长度为n的列表。
我想找到包含此列表的5个最小值的索引。
我知道如何使用operator
min_index,min_value = min(enumerate(list), key=operator.itemgetter(1))
可以修改此代码以获取我追踪的5个索引的列表吗?
答案 0 :(得分:1)
虽然这需要对整个列表进行排序,但您可以获得sorted
列表的一部分:
data = sorted(enumerate(list), key=operator.itemgetter(1))[:5]
答案 1 :(得分:1)
这样的事情怎么样?
map(lambda x: [a.index(x),x],sorted(list)[:5])
将返回列表列表,其中list [x] [0] =索引和列表[x] [1] =值
编辑:
这假定列表没有重复的最小值。正如adhg McDonald-Jensen指出的那样,这只会返回给定值的第一个实例。
答案 2 :(得分:1)
如果使用包heapq
,可以通过nsamllest
:
heapq.nsmallest(5, enumerate(list), key=operator.itemgetter(1))