python如何快速获取1个元素_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] 永远是最小的元素。并且剩余的元素可以很

容易的通过调用 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、付费专栏及课程。

余额充值