. 问题
在某个集合中找出最大或最小的一个元素,或者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()
会更加块。
以上总结或许能帮助到你,或许帮助不到你,但还是希望能帮助到你,如有疑问、歧义,直接私信留言会及时修正发布;非常期待你的点赞和分享哟,谢谢!
未完,待续…
一直都在努力,希望您也是!
微信搜索公众号:就用python