1 import heapq #导入heapq堆模块 2 import random 3 data = random.sample(range(1000),10) 4 print(data) 5 heapq.heapify(data) #堆化随机测试数据 6 print('堆化随机测试数据:',data) 7 heapq.heappush(data,30) #新元素入堆,自动调整堆 8 print('插入30后的堆数据:',data) 9 heapq.heappush(data,5) 10 print('插入5后的堆数据:',data) 11 print('删除的数据为:',heapq.heappop(data),'返回并删除最小元素,自动调整堆后的堆数据:',data) 12 print('弹出最小元素,同时新元素入堆后的数据:',heapq.heappushpop(data,1000)) 13 print('弹出最小元素,同时新元素入堆后的数据',heapq.heapreplace(data,500)) 14 print('弹出最小元素,同时新元素入堆后的数据',heapq.heapreplace(data,700)) 15 print('返回最大的前3个元素',heapq.nlargest(3,data) ) #返回最大的前3个元素 16 print('返回指定排序规则下最小的3个元素',heapq.nsmallest(3,data,key=str)) #返回指定排序规则下最小的3个元素 17 print(data) 18 19 ''' 20 输出结果 21 [80, 366, 834, 269, 829, 295, 583, 952, 548, 668] 22 堆化随机测试数据: [80, 269, 295, 366, 668, 834, 583, 952, 548, 829] 23 插入30后的堆数据: [30, 80, 295, 366, 269, 834, 583, 952, 548, 829, 668] 24 插入5后的堆数据: [5, 80, 30, 366, 269, 295, 583, 952, 548, 829, 668, 834] 25 删除的数据为: 5 返回并删除最小元素,自动调整堆后的堆数据: [30, 80, 295, 366, 269, 834, 583, 952, 548, 829, 668] 26 弹出最小元素,同时新元素入堆后的数据: 30 27 弹出最小元素,同时新元素入堆后的数据 80 28 弹出最小元素,同时新元素入堆后的数据 269 29 返回最大的前3个元素 [1000, 952, 834] 30 返回指定排序规则下最小的3个元素 [1000, 295, 366] 31 [295, 366, 583, 500, 668, 834, 700, 952, 548, 829, 1000] 32 '''