挨個出數
合併獲取前n最大或最小的元素
實現優先佇列
其他方法
該模組提供了堆排序演算法的實現。
堆是一顆特殊的完全二叉樹。
小根堆:滿足任一節點都比其孩子節點小
大根堆:滿足任一節點都比其孩子節點大
使用heap.heapify(
list
)轉換列表成為堆結構
import heapq
import random
ls =
list
(range(10
))random.shuffle(ls)
heapq.heapify(ls)
# 注意,heapq建立的是小根堆
print
(ls)
)函式把值加入堆中
import heapq
import random
heap =
ls =
list
(range(10
))random.shuffle(ls)
for item in ls:
(heap)
import heapq
import random
ls =
list
(range(10
))random.shuffle(ls)
heapq.heapify(ls)
for i in
range
(len
(ls)):
print
)
將多個排序後的序列合併成乙個從小到大的序列,返回生成器
import heapq
num1 =[32
,3,5
,34,54
,23,132
]num2 =[23
,2,12
,656
,324,23
,54]num1 =
sorted
(num1)
num2 =
sorted
(num2)
res = heapq.merge(num1, num2)
print
(res)
# 生成器
import random
nums =
list
(range(10
))random.shuffle(nums)
print
(heapq.nlargest(n=
3, iterable=nums)
)# 獲取最大
print
(heapq.nsmallest(n=
3, iterable=nums)
)# 獲取最小
====
====
====
====
====
====
====
====
====
====
====
====
====
=from pprint import pprint
這兩個函式還接受乙個key引數,用於dict或其他資料結構型別使用
portfolio =[,
,,,,
]cheap = heapq.nsmallest(
3, portfolio, key=
lambda s: s[
'price'])
expensive = heapq.nlargest(
3, portfolio, key=
lambda s: s[
'price'])
pprint(cheap)
pprint(expensive)
heapq的 q 是優先佇列的意思
堆的值可以是元組型別,可以實現對帶權值的元素進行排序。
h =(
5,'write code'))
(7,'release product'))
(1,'write spec'))
(3,'create tests'))
(1,'bcreate tests'))
# 在heapq中,權值相同, 後新增的先輸出
print
)
其他:(1
) heapreplace: 刪除最小元素並且增加乙個元素
import heapq
import random
nums =
list
(range(10
))random.shuffle(nums)
heapq.heapify(nums)
heapq.heapreplace(nums,-1
)print
(nums)(2
如果大,則刪除第乙個元素,然後新增新的元素值,
否則不更改堆並且返回新增的值。
print9)
)# 返回彈出的最小值
print-90
))# 返回新增的值
python內建模組 Python 內建模組
內建模組 python有一套很有用的標準庫 standard library 標準庫會隨著python直譯器,一起安裝在你的電腦中的。它是python的 乙個組成部分。這些標準庫是python為你準備好的利器,可以讓程式設計事半功倍。常用標準庫 標準庫 說明 builtins 內建函式預設載入 os...
python堆排序演算法 Python 堆排序
python 堆排序 堆排序 heapsort 是指利用堆這種資料結構所設計的一種排序演算法。堆積是乙個近似完全二叉樹的結構,並同時滿足堆積的性質 即子結點的鍵值或索引總是小於 或者大於 它的父節點。堆排序可以說是一種利用堆的概念來排序的選擇排序。largest i l 2 i 1 left 2 i...
堆排序python理解 堆排序Python實現
def heap sort nos global size size len nos print the size of the list is d size build heap size,nos for i in range size 1,0,1 nums 0 nums i nums i num...