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

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

2. 附带索引的快速排序

关于快排、归并排序以及选择排序算法可看我的另外一篇博客 https://blog.csdn.net/yldmkx/article/details/108367734,强烈推荐先理解快排之后,再去理解添加索引的快排算法。


def quicksort(Lp):if len(Lp)<2:return LpL = Lp[:]key = len(L)//2left = -1right = len(L)while left<right:right -= 1      #下一轮开始都需要在上轮的值移动一步,不然又重复计算while right>key and L[right][0]>=L[key][0]:right -= 1if right>key:   #满足条件说明while循环是因为L[right]<L[key]而跳出,此时需要更新keyL[right], L[key] = L[key], L[right]key = rightleft += 1       #下一轮开始都需要在上轮的值移动一步,不然又重复计算while left<key and L[left][0]<=L[key][0]:left += 1if key>left:    #满足条件说明while循环是因为L[left]>L[key]而跳出,此时需要更新keyL[left], L[key] = L[key], L[left]key = leftreturn quicksort1(L[:key]) + [L[key]] + quicksort1(L[key+1:])Lit = [3, -4, 0, 6.4, -1.6, 9.09]
List = [[Lit[i], i] for i in range(len(Lit))]    #将原列表拓展成附带索引的二维列表
L = quicksort(List)                              #调用快排算法
k = 3                                            #示范寻找最小3个数的索引
for i in rang(k):                                #打印列表的k个最小值以及索引print(L[i])

执行结果如下图所示,每一次第一个数是列表的前k个最小值,第二个数是该最小值在原列表的索引,和第一种方法结果一样

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

  1. python取列表中最接近某值的元素及索引

    原版 li = [1.23, 1.25, 1.3, 1.59, 1.52, 1.50, 1.7, 1.33, 1.22, 1.22, 1.9, 1.2]defaultnumber = 1.51sele ...

  2. 在哪里能收到python实例代码-Python找出最小的K个数实例代码

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 这个题目完成的思路有很多,很多排序算法都可以完成既定操作,关键是复 ...

  3. 找出无序数组中最小的k个数(top k问题)

    2019独角兽企业重金招聘Python工程师标准>>> 给定一个无序的整型数组arr,找到其中最小的k个数 该题是互联网面试中十分高频的一道题,如果用普通的排序算法,排序之后自然可以 ...

  4. python统计列表中元素个数_python中计算一个列表中连续相同的元素个数方法

    python中计算一个列表中连续相同的元素个数方法 最简单的例子: a = [1,1,1,1,2,2,2,3,3,1,1,1,3] # 问:计算a中最多有几个连续的1 很明显,答案是4 如果用代码实现 ...

  5. python第k序元素查找列表_【Python】第8次练习:列表——程序填空题 -合并队列、列表元素零的移动、列表逆序输出、第K序元素查找...

    [Python]第8次练习:列表--程序填空题 -合并队列.列表元素"零"的移动.列表逆序输出.第K序元素查找 1.程序填空题 -合并队列 题目:某班男女两队同学各若干人,男生已按 ...

  6. python四中方法获取列表中最大/最小的前n个数值的位置索引

    转载自:https://blog.csdn.net/together_cz/article/details/84944927 今天遇到一个小问题就是要获取列表中最大/最小的前n个数值的位置索引,实现很 ...

  7. python获取列表中最大N个数及其索引

    python获取列表中最大N个数及其索引 写作目的 步骤 结果展示 写作目的 主要是看到别人的基本都是利用hepap排序,感觉还挺麻烦的 步骤 import pandas a=[5,2,6,7,9] ...

  8. 最小的k个数(第k小的数)

    1. 利用快排的思想,由于每次只选择左右部分中的一部分,因此时间复杂度为O(n). # -*- coding:utf-8 -*- class Solution:# (O(n)复杂度)def GetLe ...

  9. Python - 返回 1:n 中所有可能的 k 个数的组合

    一.引言 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合. 示例: 输入: n = 4 k = 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3], ...

最新文章

  1. transformer预测过程_2019最新进展 | Transformer在深度推荐系统中的应用
  2. android 追加写入数据到文件
  3. Java 面试题 —— 老田的蚂蚁金服面试经历
  4. machine ID问题 ( u-boot设置machine id , set mach_type 0x16a )
  5. Filter过滤要登录的页面(重要)
  6. XCode的控制台调试命令
  7. Laravel源码解析之Request
  8. 【BZOJ3143】游走,概率计算+高斯消元
  9. 如何做一个国产数据库(六) 网络传输 nodejs做测试客户端
  10. Linux之ioctl20160705
  11. linux网络适配器驱动程序怎么安装,英特尔?服务器适配器 — Linuxixgbe* 基础驱动程序概述和安装...
  12. Mac卸载比较彻底的软件管理工具:App Cleaner Uninstaller
  13. 2020全国计算机二级office大纲,2018-2020年(最新)全国计算机等级考试二级MS Office高级应用考试大纲...
  14. 9.4.3 BINARY与VARBINARY类型
  15. 2007-2020年各大企业主营业务收入构成(行业)
  16. 使用Javascript动态添加和删除元素
  17. 机器学习基础:台大李宏毅的线性代数视频公开课
  18. 低效程序员的九个坏习惯
  19. 机器学习之手写字体(digits)识别——利用sklearn实现
  20. 熔断机制什么意思_什么是熔断机制 熔断机制是什么意思

热门文章

  1. 世界大学排名:12所中国大学科研实力进百强
  2. 730版本去掉恼人的提示信息
  3. 试说明机器指令和微指令之间的关系_男女关系之间,是他在说谎吗?观察他的肢体语言说明一切...
  4. python希尔排序的优缺点_Pythonの希尔排序
  5. bp神经网络预测模型_基于BP神经网络模型的河南省严重精神障碍患者服药依从性影响因素分析...
  6. linux透明大页内存,rhel7.2 禁用透明的大页内存--transparent_hugepage(THP)
  7. 明日之后怎么跳过实名认证_明日之后新手教程能不能跳过 明日之后新手教程玩法介绍...
  8. python类继承可以有多个父类_Python3基础 多重继承 一个子类继承于多个父类
  9. 计算机技术应用在教学中的优势,[浅谈多媒体在教学中的应用及优势] 多媒体教学的优势...
  10. python 函数参数前面两个星号_Python中参数前面一个星号两个星号(*参数,**参数)起什么作用呢?...