python heapq库实践

heapq是python3中的一个库,它使用了小根堆(即堆首元素最小)。

1 创建

方法1:通过heapq.heapify(nums)将列表类型的变量nums变为小根堆类型。

示例代码如下,

import heapq

nums = [1, 3, 5, 2, 4, 6]
heapq.heapify(nums)
print(f'nums = {nums}')

#依次弹出堆首
while len(nums):
    x = heapq.heappop(nums)
    print(x)

结果为,

nums = [1, 2, 5, 3, 4, 6]
1
2
3
4
5
6

方法2:通过heapq.heappush(h, x)将元素x推入堆h中,示例代码如下,

import heapq

nums = [1, 3, 5, 2, 4, 6]
h = []
for x in nums:
    heapq.heappush(h, x)
print(f'h = {h}')

#依次弹出堆首
while len(h):
    x = heapq.heappop(h)
    print(x)

结果为,

h = [1, 2, 5, 3, 4, 6]
1
2
3
4
5
6

2 取堆首元素

h[0]返回堆首元素,示例代码如下,

import heapq

nums = [3, 1, 5, 2, 4, 6]
heapq.heapify(nums)
print(f'nums[0] = {nums[0]}')

结果为,

nums[0] = 1

3 返回堆首元素并弹出

heapq.heappop(h)返回堆首元素并弹出,示例代码如下,

import heapq

nums = [3, 1, 5, 2, 4, 6]
heapq.heapify(nums)
x = heapq.heappop(nums)
print(f'nums = {nums}')

结果为,

nums = [2, 3, 5, 6, 4]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YMWM_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值