python 堆(Heap)

#coding=utf-8

# 堆(Heap)

# heapq

from heapq import *
from random import *
# 定义一个堆,其实堆就是一个列表,只是通过heapq模块中的函数利用堆算法来改变列表中的元素而已
data = [1, 2, 3, 4, 5, 6,7,8,9]
heap = []
for n in data:
    # 利用choice函数从data列表中随机选择9个数(可能有重复的数)
    value = choice(data)
    # 使用heappush函数将value添加到堆
    heappush(heap,value)
print(heap) # [1, 2, 2, 5, 4, 6, 5, 6, 9]
# 将2.5添加进堆
heappush(heap,2.5)
print(heap) # [1, 2, 2, 5, 2.5, 6, 5, 6, 9, 4]
# 弹出heap中的最小值,并获取这个最小值,运行结果:1
print(heappop(heap))
print(heap) # [2, 2, 4, 5, 2.5, 6, 5, 6, 9]

data1 = [6,3,1,12,8]
# 将data1转化为堆(直接修改了data1)
heapify(data1)
print(data1) # [1, 3, 6, 12, 8]
# 弹出data1中的最小值,并将100添加进堆
heapreplace(data1, 100)
print(data1) # [3, 8, 6, 12, 100]
# 得到data1中的最大值,运行结果:[100]
print(nlargest(1,data1))
# 得到data1中最大的前2个值,运行结果:[100,12]
print(nlargest(2,data1))
# 得到data1中最小的值,运行结果:[3]
print(nsmallest(1,data1))
# 得到data1中最小的前3个值,运行结果:[3, 6, 8]
print(nsmallest(3,data1))
# 合并多个有序的列表,并得到一个新的有序列表
print(list(merge([1,3,1234,7], [0,2,4,8], [5, 10, 15, 20], [], [25]))) # [0, 1, 2, 3, 4, 5, 8, 10, 15, 20, 25, 1234, 7]
# 合并多个有序的列表, 并通过key关键字指定一个函数len,也就是说,会按列表元素值的长度进行排序
print(list(merge(['dog', 'horse'], ['cat', 'fish', 'kangaroo'], key=len))) # ['dog', 'cat', 'fish', 'horse', 'kangaroo']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值