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