python模块之heapq

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python模块之heapq相关的知识,希望对你有一定的参考价值。

参考技术A 堆特征:堆列表位置i处的元素总是大于位置i // 2处的元素(反过来说就是小于位置2 * i 和 2 * i + 1处的元素)

heapify(list) 让列表具有堆特征
heappush(heap, item) 将值压入堆中
heappop(heap) 从堆中弹出最小的元素
heapreplace(heap, item) 弹出最小的元素,并将值压入堆中
nlargest(n, iterable, key=None) 返回堆中n个最大的元素
nsmallest(n, iterable, key=None) 返回堆中n个最小的元素
heappushpop(heap, item) 将item压入堆中然后弹出最小的元素
merge(*iterables, key=None, reverse=False) 将有序序列进行合并排序,返回生成器序列

python之使用heapq()函数计算列表中数值大小

# heapq函数:计算列表最大几个值和最小几个值
# 语法:heapq.nlargest(n, list,[key])
# n表示最大或最小的几个; list为分析的对象; key为排序关键字,非必填

import heapq

list_num = [1, 4, 3, 2, 5]
print("最大的一个:", max(list_num))
# 求列表最大的两个
list_temp = heapq.nlargest(2, list_num)
print("最大的两个:", list_temp)

list_people = [
    {‘name‘: ‘Mike‘, ‘age‘: 22},
    {‘name‘: ‘Lee‘, ‘age‘: 25},
    {‘name‘: ‘Tom‘, ‘age‘: 33},
    {‘name‘: ‘Jack‘, ‘age‘: 41}
]
# 求最年轻的两个人
list_temp = heapq.nsmallest(2, list_people, lambda person: person[‘age‘])
print("最年轻的两个人:", list_temp)

 运行结果:

最大的一个: 5
最大的两个: [5, 4]
最年轻的两个人: [{‘name‘: ‘Mike‘, ‘age‘: 22}, {‘name‘: ‘Lee‘, ‘age‘: 25}]

 

以上是关于python模块之heapq的主要内容,如果未能解决你的问题,请参考以下文章

python基础之模块之os模块

PYTHON之模块

Python 之 模块初识

Python模块之目录

Python基础(11)_python模块之time模块rando模块hashlibos模块

python模块基础之getpass模块