栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

获取python列表中最大/最小的n个元素及索引

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取python列表中最大/最小的n个元素及索引

方法一:sorted函数

先使用zip函数将列表索引和元素聚合在一起,然后转换回列表类型,tmp=[(索引, 元素),…]然后利用sorted函数按照tmp列表中的每个元素的第二位进行排序。

test = [41,65,2,8,12,1,534,76,89,4,2]
# 先将索引和列表元素对应起来
tmp = list(map(list,zip(range(len(test)), test)))
# 从大到小排序
large = sorted(tmp,key=lambda x:x[1],reverse=True)
print(large5) 
# 从小到大排序
small = sorted(tmp,key=lambda x:x[1],reverse=False)
print(small5) 

结果:

[[6, 534], [8, 89], [7, 76], [1, 65], [0, 41], [4, 12], [3, 8], [9, 4], [2, 2], [10, 2], [5, 1]]
[[5, 1], [2, 2], [10, 2], [9, 4], [3, 8], [4, 12], [0, 41], [1, 65], [7, 76], [8, 89], [6, 534]]
方法二:heapq库

先使用zip函数将列表索引和元素聚合在一起,然后转换回列表类型,tmp=[(索引, 元素),…]调用heapq库的堆排序,按照tmp列表中的每个元素的第二位进行排序。

import heapq
 
# 最大5个
test = [41,65,2,8,12,1,534,76,89,4,2]
tmp = zip(range(len(test)), test)
large5 = heapq.nlargest(5, tmp, key=lambda x:x[1])
print(large5)

# 最小5个
test = [41,65,2,8,12,1,534,76,89,4,2]
tmp = zip(range(len(test)), test)
small5 = heapq.nsmallest(5, tmp, key=lambda x:x[1])
print(small5) 

# P.S. 调用一次heapq.nlargest或heapq.nsmallest之后tmp将被清空。

结果:

[(6, 534), (8, 89), (7, 76), (1, 65), (0, 41)]
[(5, 1), (2, 2), (10, 2), (9, 4), (3, 8)]
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767403.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号