Python获取list中最大或最小的n个数及其索引方式

 更新时间:2025年09月01日 09:51:43   作者:还是少年呀  
文章介绍两种获取列表最大/最小值的方法:方法一通过深拷贝逐次定位并置零,适应重复值场景;方法二利用heapq模块,适用于无重复值情况,重复时需结合方法一,两种方法各有优劣,代码示例展示不同场景下的实现效果

求取list中的最大或者最小的几个数字可以使用以下方法

方法一

使用深拷贝的方法,copy需要求索引的list,每次求最大或者最小值及其索引,并置相应位置的值为0,迭代n次。

代码如下:

import copy 
m = [34,94,35,78,45,67,23,90,1,0]
t = copy.deepcopy(m)
# 求m个最大的数值及其索引
max_number = []
max_index = []
for _ in range(2):
    number = max(t)
    index = t.index(number)
    t[index] = 0
    max_number.append(number)
    max_index.append(index)
t = []
print(max_number)
print(max_index)
结果:
[94, 90]
[1, 7]

该方法适应性好,即使数值有重复的,也能得到和其数值对应的索引。

方法二

使用heapq包中的方法,当所求的最大或最小的n个数值不重复时可以直接求出相应的数值和对应的索引,当有重复值的时候还是需要借鉴方法一的思路。

无重复值的代码

import heapq
m = [34,94,35,78,45,67,23,90,1,0]
# 求一个list中最大的2个数,并排序
max_number = heapq.nlargest(2, m) 
# 最大的2个数对应的,如果用nsmallest则是求最小的数及其索引
max_index = map(m.index, heapq.nlargest(2, m)) 
print(max_number)
# max_index 直接输出来不是数,使用list()或者set()均可输出
print(set(max_index))

结果:

[94, 90]
{1, 7}

有重复值的代码

import heapq
m = [9, 8, 8, 6, 6, 5, 4, 2, 2, 0]
max_number = heapq.nlargest(3, m) 
max_index = []
for t in max_number:
    index = m.index(t)
    max_index.append(index)
    m[index] = 0
    
print(max_number)
print(max_index)

结果:

[9, 8, 8]
[0, 1, 2]

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 在python中使用nohup命令说明

    在python中使用nohup命令说明

    这篇文章主要介绍了在python中使用nohup命令说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python实现字典去除重复的方法示例

    Python实现字典去除重复的方法示例

    这篇文章主要介绍了Python实现字典去除重复的方法,涉及Python字典遍历、文件读取、去除重复等相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • python使用gdal对shp读取,新建和更新的实例

    python使用gdal对shp读取,新建和更新的实例

    这篇文章主要介绍了python使用gdal对shp读取,新建和更新的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 详解Python中type与object的恩怨纠葛

    详解Python中type与object的恩怨纠葛

    估计很多人都会有这样一个困惑,object 的类型是 type,但它同时又是 type 的基类,这是怎么做到的?带着这个疑问,我们开始本文的内容
    2023-04-04
  • python单向链表实例详解

    python单向链表实例详解

    这篇文章主要为大家详细介绍了python单向链表实例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 如何利用python读取micaps文件详解

    如何利用python读取micaps文件详解

    这篇文章主要给大家介绍了关于如何利用python读取micaps文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • TensorFlow2基本操作之 张量排序 填充与复制 查找与替换

    TensorFlow2基本操作之 张量排序 填充与复制 查找与替换

    这篇文章主要介绍了TensorFlow2基本操作之 张量排序 填充与复制 查找与替换,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Python Apschedule定时任务框架的用法详解

    Python Apschedule定时任务框架的用法详解

    apschedule是一个用python写的定时处理框架,这篇文章主要为大家详细介绍了Apschedule定时任务框架的用法,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-06-06
  • Python 使用dict实现switch的操作

    Python 使用dict实现switch的操作

    这篇文章主要介绍了Python 使用dict实现switch的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Python基于回溯法子集树模板解决找零问题示例

    Python基于回溯法子集树模板解决找零问题示例

    这篇文章主要介绍了Python基于回溯法子集树模板解决找零问题,简单描述了找零问题并结合具体实例形式分析了Python使用回溯法子集树模板解决找零问题的步骤、实现方法与相关操作技巧,需要的朋友可以参考下
    2017-09-09

最新评论