34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
import heapq
|
||
|
||
# heapq里有两个函数,nlargest和nsmallest可以找最大N个和最小N个;
|
||
# 参数接受一个列表和一个N
|
||
|
||
def max_n(search_list, n):
|
||
list_max_n = heapq.nlargest(n ,search_list)
|
||
return list_max_n
|
||
|
||
def min_n(search_list, n):
|
||
list_min_n = heapq.nsmallest(n, search_list)
|
||
return list_min_n
|
||
|
||
# 这两个函数都提供了一个key输入来实现在字典列表中的应用
|
||
def max_in_dictlist(search_list, n, key):
|
||
max_key_n = heapq.nlargest(n, search_list, key=lambda dic : dic[key])
|
||
return max_key_n
|
||
|
||
# 如果寻找最大N个和最小N个元素,这个方法在N的规模不大的时候好用;
|
||
# 当日在N=1的时候还是用max和min方法更快,要是N巨大那就得排序了
|
||
|
||
# heapq事实上是一个堆方法,将列表在底层序列化为一个最小堆
|
||
def heapq_func():
|
||
ori_list = [1,2,3,4,5]
|
||
heap = list(ori_list)
|
||
# 将列表进行堆排序
|
||
heapq.heapify(heap)
|
||
# 弹出堆顶元素
|
||
heapq.heappop(heap)
|
||
|
||
if __name__ == '__main__':
|
||
l = [1,2,3,4,5]
|
||
print(max_n(l, 3))
|