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

147 阅读2分钟

. 问题

在某个集合中找出最大或最小的一个元素,或者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 = (10123456789)

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()会更加块。


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

未完,待续…

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

微信搜索公众号:就用python

二维码.png