查找列表中最小n个数字的索引

时间:2018-10-21 15:02:14

标签: python python-2.7

例如l = [1,2,5,6,72,234,52,4,11]

如何找到3个最小的索引?

这里最小的3个数字是1,2,4,因此所需的输出是[0,1,7]

我只能使用ptyhon 2.7

非常感谢

3 个答案:

答案 0 :(得分:0)

一种简单的方法:

l = [1,2,5,6,72,234,52,4,11]
nsamllest = lambda l,n:map(lambda x:x[1],sorted([(x,i) for i,x in enumerate(l)],key=lambda x:x[0])[:n])
nsamllest(l,3)

输出:[0,1,7]

答案 1 :(得分:0)

您可以改用heapq.nsmallest

import heapq
from operator import itemgetter
[i for i, _ in heapq.nsmallest(3, enumerate(l), key=itemgetter(1))]

这将返回:

[0, 1, 7]

答案 2 :(得分:0)

如果要在数字列表中查找最小/最大索引(这似乎是您的情况),那么我建议您使用numpy:

mylist = [1,2,5,6,72,234,52,4,11]

import numpy as np
mindex = np.argmin(mylist)

OR

maxinx = np.argmax(mylist)