python四中方法获取列表中最大/最小的前n个数值的位置索引
转载自:https://blog.csdn.net/together_cz/article/details/84944927
今天遇到一个小问题就是要获取列表中最大/最小的前n个数值的位置索引,实现很简单,可仔细一想实现的方法还是很有意思的,下面是具体的实现:
#!usr/bin/env python
#encoding:utf-8
from __future__ import division'''
__Author__:沂水寒城
功能:获取列表中最大/最小的前n个数值的位置索引
'''import copy
import heapqdef getListMaxNumIndex(num_list,topk=3):'''获取列表中最大的前n个数值的位置索引'''max_num_index=map(num_list.index, heapq.nlargest(topk,num_list))min_num_index=map(num_list.index, heapq.nsmallest(topk,num_list))print 'max_num_index:',max_num_indexprint 'min_num_index:',min_num_indexdef getListMaxNumIndex2(num_list,topk=3):'''获取列表中最大的前n个数值的位置索引'''tmp_list=copy.deepcopy(num_list)tmp_list.sort()max_num_index=[num_list.index(one) for one in tmp_list[::-1][:topk]]min_num_index=[num_list.index(one) for one in tmp_list[:topk]]print 'max_num_index:',max_num_indexprint 'min_num_index:',min_num_indexdef getListMaxNumIndex3(num_list,topk=3):'''获取列表中最大的前n个数值的位置索引'''num_dict={}for i in range(len(num_list)):num_dict[i]=num_list[i]res_list=sorted(num_dict.items(),key=lambda e:e[1])max_num_index=[one[0] for one in res_list[::-1][:topk]]min_num_index=[one[0] for one in res_list[:topk]]print 'max_num_index:',max_num_indexprint 'min_num_index:',min_num_indexdef getListMaxNumIndex4(num_list,topk=3):'''获取列表中最大的前n个数值的位置索引'''tmp_list=copy.deepcopy(num_list)max_num=sum([abs(O) for O in num_list])min_num=-1*max_nummax_num_index,min_num_index=[],[]for i in range(topk):one_max_index=num_list.index(max(num_list))max_num_index.append(one_max_index)num_list[one_max_index]=min_numfor i in range(topk):one_min_index=tmp_list.index(min(tmp_list))min_num_index.append(one_min_index)tmp_list[one_min_index]=max_numprint 'max_num_index:',max_num_indexprint 'min_num_index:',min_num_indexif __name__=='__main__':num_list=[13,4,-8,3,1,43,55,2,7,11,78]getListMaxNumIndex(num_list,topk=3)getListMaxNumIndex2(num_list,topk=3)getListMaxNumIndex3(num_list,topk=3)getListMaxNumIndex4(num_list,topk=3)
结果如下;
max_num_index: [10, 6, 5]
min_num_index: [2, 4, 7]
max_num_index: [10, 6, 5]
min_num_index: [2, 4, 7]
max_num_index: [10, 6, 5]
min_num_index: [2, 4, 7]
max_num_index: [10, 6, 5]
min_num_index: [2, 4, 7]
其中,第一种最简单耗时也最短,是通过heapq库间接实现的,后面三种方法的“笨重程度”依次增加,不过都实现了同样的功能。
python四中方法获取列表中最大/最小的前n个数值的位置索引相关推荐
- Python: 使用max()获取列表中重复出现次数最多的元素
import numpy as npa = [1,2,3,4,5,6,7,] print(max(a,key=a.count)) 其中 a 必须使 列表. 如果a 是nparray就会出错 例如如下是 ...
- Python实例 -- 如何快速获取列表中最大的三个元素
如何快速获取列表中最大的三个元素 最近在做实验,期间需要在一个列表中获取最大的三个元素,自己写的方法复杂度太高,放上大牛的方法,复杂度很低.多看几遍,才能体会到大概的精髓.这道题也是Python的面试 ...
- 获取列表中的最大的N项和最小的N项
获取列表中的最大的N项和最小的N项 #!/sur/bin/env python # -*- coding:utf-8 -*- # author:zengsf #time:2018/10/31impor ...
- python权重是什么意思_在python带权重的列表中随机取值的方法
1 random.choice python random模块的choice方法随机选择某个元素 foo = ['a', 'b', 'c', 'd', 'e'] from random import ...
- java list 截取部分数据_Java List.subList()方法:获取列表中指定范围的子列表
集合类中的 List.subList() 方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作.返回列表中指定范围的子列表. 语法: subList(int fromIndex,i ...
- 【python】获取列表中最长连续数字
最近开发遇到一个功能需求,目的是要获取一个AI分析结果中最长连续帧,比如一个视频中连续3帧有人,那么我认为这个视频就是有人,我就要判断这个视频帧列表中是否有连续的三帧有人.本质就是获取列表中的最长连续 ...
- Python入门--列表的查询操作--获取列表知道那个元素的索引、获取列表中的单个元素、获取列表中的多个元素
#列表的查询操作 #获取列表中指定元素的索引 #index()-->如果列表中存在N个相同的元素,只返回相同元素中的第一个索引 # -->如果查询的元素在列表中不存在,则会抛出Valuee ...
- python获取列表中最大N个数及其索引
python获取列表中最大N个数及其索引 写作目的 步骤 结果展示 写作目的 主要是看到别人的基本都是利用hepap排序,感觉还挺麻烦的 步骤 import pandas a=[5,2,6,7,9] ...
- python 获取列表中多个元素-切片操作
# -*-coding:utf-8 -*- # @Time : 20:48 # @Author: 黄荣津 # @File : 4.获取列表中多个元素-切片操作.py # @Software: PyCh ...
最新文章
- 牛客多校第六场-H-Pair
- python 字典的值是列表_python实现求和python如何通过列表中字典的值对列表进行排序...
- 前端:常用的meta标签总结
- Java对象内存图一
- centos如何安装数据库mysql
- mysql5.7 no password_MySQL5.7.20报错Access denied for user 'root'@'localhost' (using password: NO)
- 【Hive】命令行提示符中显示当前所在数据库
- ZOJ3067_Nim
- css radio 垂直居中显示,CSS表单元素垂直居中完美解决方案
- linux mint 19安装 kvm 软件包
- Vue3中文文档 - vuejs
- 再传喜讯,鸿雁中标杭州地铁3号线配电工程
- 2021年韩国经济发展研究报告
- TcpClient 示例程序 C 语言
- Tomcat之——宕机自动重启和每日定时启动tomcat
- 【图片新闻】五角大楼的国防创新部DIU正在规划建设一个未来机器人空间站
- matlab用jc法计算可靠度,用MATLAB实现JC法计算结构可靠度程序
- 马未都:人生三重境界
- 李开复台大演讲:人工智能来了,别怕
- NVCC CUDA编译流程
热门文章
- opensplice dds v6.3.2_给你看个宝贝,近乎完美的DDS正弦波信号音生成器
- iOS 图形编程总结
- Newtonsoft.Json日常用法
- Linux安装配置tomcat
- 《PHP、MySQL和Apache入门经典(第5版)》一2.7 基本安全规则
- java获得时间和linux系统时间不一致
- python 遗传算法精简版
- 比Jquery FlexiGrid更好用 dotnetFlexGrid 1.2beta更新-增加展现模板模式(Grid中可以放编辑控件和任意Html内容了)...
- java 非法线程_JVM中的线程行为
- orcal 工具能连接上 程序连接不上_电脑无线网络连接不上怎么办