''' heapq模块:提供基于堆的优先排序算法,自动将传入的序列进行堆排序。 堆:堆通常是一个可以被看做一棵树的数组对象。 堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 ''' import heapq nums = [1, 2, 3, 4, -8, 15, 22, 33, 55, 66, 103, 5] # heapq.heappop(nums)获取最小元素,并从堆中删除 print(heapq.heappop(nums)) # >>> 1 # 往堆中插入一条新的值 print(heapq.heappush(nums, 11)) print(nums) # >>> None # >>> [2, -8, 3, 4, 5, 11, 22, 33, 55, 66, 103, 15] # 弹出一个最小的值,然后将item插入到堆当中。堆的整体的结构不会发生改变。 print(heapq.heapreplace(nums, 3)) print(nums) # >>> 2 # >>> [-8, 3, 3, 4, 5, 11, 22, 33, 55, 66, 103, 15] # 弹出最小的值,并且将新的值插入其中 print(heapq.heappushpop(nums, 99)) print(nums) # >>> -8 # >>> [3, 3, 11, 4, 5, 15, 22, 33, 55, 66, 103, 99] #以线性时间将一个列表转为堆 print(heapq.heapify(nums)) # >>> None # 从堆中找出做大的N个数,key的作用是用列表元素的某个属性和函数作为关键字 print(heapq.nlargest(3,nums)) # >>> [103, 99, 66] # 从堆中找出做小的N个数,key的作用是用列表元素的某个属性和函数作为关键字 print(heapq.nsmallest(3,nums)) # >>> [3, 3, 4] # heapq.merge(iterables,key=None,reverse) 将多个堆进行合并 print(heapq.merge(nums)) # >>> <generator object merge at 0x0000029FE13D46D0>
python-heapq模块
猜你喜欢
转载自blog.csdn.net/qq_33961117/article/details/81941759
今日推荐
周排行