python:在序列中找到最大或最小元素

. 问题

在某个集合中找出最大或最小的一个元素,或者n个元素。

. 解决方案

找出最大或最小的一个元素,例如:

b = [10, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(min(b))
print(max(b))

找出最大或最小的n个元素,源数据必须是序列(str、tuple、list、set)类型,例如:

import heapq

b = [10, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(heapq.nlargest(2, b))
print(heapq.nsmallest(2, b))

取出的元素返回的是列表(list)类型,2代表的是取几个值,如果指定所取的值大于b中的所存储的元素数量,则返回全部,例如:

import heapq

b = (10, 1, 2, 3, 4, 5, 6, 7, 8, 9)

print(heapq.nlargest(20, b))
print(heapq.nsmallest(20, b))

# 运行结果
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Process finished with exit code 0

nlargest()nsmallest()这两个函数都可以接受一个参数key,例如:

import heapq


b = [
    {"title": "芹菜", "serving": 10, "price": 10.46},
    {"title": "茄子", "serving": 20, "price": 15.66},
    {"title": "香菇", "serving": 10, "price": 20.99},
    {"title": "丝瓜", "serving": 10, "price": 9.99},
    {"title": "冬瓜", "serving": 10, "price": 4.99},
]

print(heapq.nlargest(2, b, key=lambda s: s["price"]))
print(heapq.nsmallest(2, b, key=lambda s: s["price"]))

# 运行结果
[{'title': '香菇', 'serving': 10, 'price': 20.99}, {'title': '茄子', 'serving': 20, 'price': 15.66}]
[{'title': '冬瓜', 'serving': 10, 'price': 4.99}, {'title': '丝瓜', 'serving': 10, 'price': 9.99}]

Process finished with exit code 0

. 总结一句话

当你想找的元素数量相对较小时(数量很大的话不考虑这个),使用nlargest()nsmallest()这两个函数是最合适的,如果你只是简单的想找到最小或最大的元素,那就用max()min()会更加块。


以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!

未完,待续…

一直都在努力,希望您也是!

更多内容欢迎关注公众号

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值