Python,得到列表最小k个数或最大k个数的索引

如果是直接得到最小或最大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]])

 在命令行终端执行结果如下图所示

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值