python3入門之堆(heapq)

2021-09-24 16:46:12 字數 1334 閱讀 5867

堆是乙個二叉樹,其中每個父節點的值都小於或等於其所有子節點的值。整個堆的最小元素總是位於二叉樹的根節點。python的heapq模組提供了對堆的支援。

堆資料結構最重要的特徵是heap[0]永遠是最小的元素

注:heap為定義堆,item增加的元素

heapq.heapify(list)

注:將列表轉換為堆

>>> list = [1,2,3,5,1,5,8,9,6]

>>> heapq.heapify(list)

>>> list

[1, 1, 3, 5, 2, 5, 8, 9, 6]

注:刪除最小值,因為堆的特徵是heap[0]永遠是最小的元素,所以一般都是刪除第乙個元素。

heapq.heapreplace(heap.item)

注:刪除最小元素值,新增新的元素值

>>> list

[1, 2, 3, 5, 6, 5, 8, 9]

>>> heapq.heapreplace(list,99)

1>>> list

[2, 5, 3, 9, 6, 5, 8, 99]

heapq.heapreplace(heap,item)

注:首先判斷新增元素值與堆的第乙個元素值對比,如果大,則刪除第乙個元素,然後新增新的元素值,購置不更改堆

heapq.merge(…)

注:將多個堆合併

>>> list

[3, 5, 5, 9, 6, 6, 8, 99]

>>> h

[1000]

>>> for i in heapq.merge(h,list):

...     print(i,end=" ")

...3 5 5 9 6 6 8 99 1000 

heapq.nlargest(n,heap)

注:查詢堆中的最大元素,n表示查詢元素個數

>>> list

[3, 5, 5, 9, 6, 6, 8, 99]

>>> heapq.nlargest(3,list)

[99, 9, 8]

>>>

heapq.nsmallest(n,heap)

注:查詢堆中的最小元素,n表示查詢元素的個數

>>> list

[3, 5, 5, 9, 6, 6, 8, 99]

>>> heapq.nsmallest(3,list)

[3, 5, 5]

Python3入門之 集合型別

set也是一種組合資料型別,支援成員關係操作 in 物件大小計算操作符 len 並且是iterable。集合資料型別至少提供乙個set.isdisjoin 方法,支援比較,也支援為邏輯操作 在集合用於聯合 交叉等上下文中使用 只有可雜湊運算的物件可以新增到集合中,可雜湊運算的物件包含乙個 hash ...

Python3入門之 迭代子

iterable資料型別每次返回其中的乙個資料項。任意包含 iter 方法的物件或任意序列 也即包含 getitem 方法的物件,該方法接受從0開始的整數引數 都是乙個iterable,並可以提供乙個迭代子。迭代子是乙個物件,該物件可以提供 next 方法,該方法依次返回每個相繼的資料項,並在沒有資...

Python3入門之軟體安裝

最近將我的python筆記整理下,希望能對他人有所幫助,這是第一課,安裝入門篇 1安裝,有ppa可用 支援所有ubuntu版本及衍生系統 開啟終端,輸入命令 sudo add apt repository ppa fkrull deadsnakes 2更新源 sudo apt get update ...