騷氣的Python之heapq的使用

2021-08-31 10:00:03 字數 2154 閱讀 2475

官網文件

heapq.heapify(x)       把 list 堆排序(下文中引數裡的 heap 都是由這一步得到的 list,如果未先 heapify 會出現錯誤)

import heapq

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

heapq.heapify(a)

print a

[1, 4, 2, 5, 6, 3]
heapq.
import heapq

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

heapq.heapify(a)

print a

[1, 4, 2, 5, 6, 3, 7]
heapq.
import heapq

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

heapq.heapify(a)

print a

print b

[2, 4, 3, 5, 6]

1

heapq.
import heapq

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

heapq.heapify(a)

print a

print b

[2, 4, 3, 5, 6, 7]

1

heapq.heapreplace(heap, item)   把最小的元素用 item 替換,並返回這個元素

import heapq

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

heapq.heapify(a)

b = heapq.heapreplace(a,0)

print a

print b

[0, 4, 2, 5, 6, 3]

1

heapq.merge(*iterables)  合併多個 heap 並返回乙個生成器,生成器生成的 list 也是 heap

import heapq

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

b = [7,0,9,8]

heapq.heapify(a)

heapq.heapify(b)

c = heapq.merge(a,b)

print a,b

d = [i for i in c]

print d

heapq.heapify(d)

print d

[1, 4, 2, 5, 6, 3] [0, 7, 9, 8]

[0, 1, 4, 2, 5, 6, 3, 7, 9, 8]

[0, 1, 3, 2, 5, 6, 4, 7, 9, 8]

heapq.nlargest(n, iterable[, key])    返回最大的前n個數的 list ( key 可以自定義,根據 key 進行排序 )

import heapq

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

print heapq.nlargest(3,a)

[6, 5, 4]
import heapq

a = [,,

,,,,

]print heapq.nlargest(3,a,key=lambda item:item["age"])

print heapq.nlargest(3,a,key=lambda item:item["name"])

[, , ]

[, , ]

heapq.nsmallest(n, iterable[, key])  返回最小的前n個數的 list ( key 可以自定義,根據 key 進行排序 )

騷氣的Python之k means演算法

1.回顧 上次對驗證碼進行了去噪和灰度化,這次對它進一步地分類處理,這裡用顏色區分,顯然是分成4個類 2.關於演算法原理我就不多說,下面看 encoding utf 8 from pil import image import math import copy import random class...

python3入門之堆(heapq)

堆是乙個二叉樹,其中每個父節點的值都小於或等於其所有子節點的值。整個堆的最小元素總是位於二叉樹的根節點。python的heapq模組提供了對堆的支援。堆資料結構最重要的特徵是heap 0 永遠是最小的元素 注 heap為定義堆,item增加的元素 heapq.heapify list 注 將列表轉換...

Python中的heapq模組

heapq模組提供基於堆的優先排序演算法,內建模組位於.anaconda3 lib heapq.py。堆的邏輯結構就是完全二叉樹,並且二叉樹中父節點的值小於等於該節點的所有子節點的值。這種實現可以使用 heap k heap 2k 1 並且 heap k heap 2k 2 其中 k 為索引,從 0...