Python 中的 heapq 模組

heapq 模組是 Python 中的一個模組,它提供了一種堆積排序的方法,可以用來快速地對列表進行排序。堆積排序是一種比較有效率的排序方法,它可以在線性時間內完成排序,而不需要額外的記憶體空間。

heapq 模組的基本用法

heapq 模組提供了兩個主要的函數:heappush() 和 heappop()。heappush() 函數可以將一個元素添加到堆積中,而 heappop() 函數則可以從堆積中移除最小的元素。

import heapq

# 建立一個空的堆積
heap = []

# 將元素添加到堆積中
heapq.heappush(heap, 5)
heapq.heappush(heap, 3)
heapq.heappush(heap, 7)

# 從堆積中移除最小的元素
min_elem = heapq.heappop(heap)
print(min_elem) # 3

heapq 模組還提供了一個函數 heappushpop(),它可以同時將一個元素添加到堆積中,並且移除最小的元素,這樣可以更有效率地對堆積進行操作:

import heapq

# 建立一個空的堆積
heap = []

# 將元素添加到堆積中
heapq.heappush(heap, 5)
heapq.heappush(heap, 3)
heapq.heappush(heap, 7)

# 同時將一個元素添加到堆積中,並且移除最小的元素
min_elem = heapq.heappushpop(heap, 4)
print(min_elem) # 3

heapq 模組還提供了一個函數 nlargest(),它可以返回列表中最大的 n 個元素:

import heapq

# 建立一個列表
nums = [5, 3, 7, 4, 1, 9, 8]

# 返回列表中最大的 3 個元素
largest_three = heapq.nlargest(3, nums)
print(largest_three) # [9, 8, 7]

heapq 模組還提供了一個函數 nsmallest(),它可以返回列表中最小的 n 個元素:

import heapq

# 建立一個列表
nums = [5, 3, 7, 4, 1, 9, 8]

# 返回列表中最小的 3 個元素
smallest_three = heapq.nsmallest(3, nums)
print(smallest_three) # [1, 3, 4]

總結

heapq 模組是 Python 中的一個模組,它提供了一種堆積排序的方法,可以用來快速地對列表進行排序。heapq 模組提供了 heappush()、heappop() 和 heappushpop() 等函數,可以對堆積進行操作,還提供了 nlargest() 和 nsmallest() 函數,可以返回列表中最大或最小的 n 個元素。

參考資料

Categorized in:

Tagged in: