如果是直接得到最小或最大k个数,那么直接排序即可。但是如果要得到索引,那么不能排序,或者你排序时附带数据的下标。本文通过两种方法来展示怎么得到最小k个数的索引,一种是直接使用min()函数得到列表的最小值,然后使用index()函数得到该值的索引,循环k次即可,很方便且易于理解;另一种则是在排序中附带数据下标,最终排序结束,也可得到最小k个数在原列表的索引。
1. List.index(min(List))
List = [3, -4, 0, 6.4, -1.6, 9.09]
Lst = List[:] #对列表进行浅复制,避免后面更改原列表数据
k = 3 #此处示范得到列表最小3个数的索引
index_k = []
for i in range(k):
index_i = Lst.index(min(Lst)) #得到列表的最小值,并得到该最小值的索引
index_k.append(index_i) #记录最小值索引
Lst[index_i] = float('inf') #将遍历过的列表最小值改为无穷大,下次不再选择
print(index_k) #打印输出最小3个数的索引以及原列表的数据
for i in range(k):
print(List[index_k[i]])
在命令行终端执行结果如下图所示