Python修炼第一天:怎样从一个里获得最大或者最小的N个元素?

Python修炼第一天

1、怎样从一个里获得最大或者最小的N个元素?

方法一:使用Python内置模heapq

import heapq  # 内置模块(堆)
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(heapq.nlargest(3, nums))  # 输出3个最大的值  [42, 37, 23] 
print(heapq.nsmallest(3, nums))  # 输出3个最小的值  [-4, 1, 2] 

方法二:可以先排序在通过切片取值

nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(sorted(nums)[-1:])  #  输出3个最大的值 [23, 37, 42]
print(sorted(nums)[:1])  # 输出3个最小的值 [-4, 1, 2]

方法三:可将列表进行堆排序后再进行取值

import heapq
nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
heap = list(nums)
heapq.heapify(heap) # 进行堆序列排序
print(heap) # [-4, 2, 1, 23, 7, 2, 18, 23, 42, 37, 8]
print(heapq.heappop(heap)) # 输出最小的元素-4
print(heapq.heappop(heap)) # 输出最小的元素1
print(heapq.heappop(heap)) # 输出最小的元素2

堆数据结构最重要的特征是 heap[0] 永远是最小的元素,如果只是想获取最小值而不是弹出,使用heap[0]。同样可以很容易的通过调用 heapq.heappop() 方法得到,该方法会先将第一个元素弹出来,然后用下一个最小的元素来取代被弹出元素

方法四:如果只取最大值和最小值可以使用max,min

nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
print(max(nums)) # 输出最大值42
print(min(nums)) # 输出最小值-4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值