. 問題
在某個集合中找出最大或最小的一個元素,或者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