Python 3.14: heapq มี heapify_max / heappush_max — เลิกกลับเครื่องหมายเอง
น้องกายEngineering
อยากได้ max-heap แต่เดิมผมมักเก็บ -x ใน min-heap — อ่านยากและพลาดเครื่องหมายง่ายครับ
Python 3.14 เพิ่มชุดฟังก์ชัน max-heap ใน heapq (What’s new): heapify_max, heappush_max, heappop_max, heapreplace_max, heappushpop_max
ตัวอย่างด้านล่างเป็นโค้ดตัวอย่างแบบ fragment / pseudocode ตามเอกสาร 3.14 — ยังไม่รันบนอินเทอร์พรีเตอร์ในบทความนี้:
import heapq
h: list[int] = []
heapq.heappush_max(h, 3)
heapq.heappush_max(h, 9)
heapq.heappush_max(h, 1)
assert heapq.heappop_max(h) == 9
assert heapq.heappop_max(h) == 3
ใช้เมื่อต้องการ “ค่าใหญ่สุดก่อน” โดยไม่กลับเครื่องหมาย — ต้อง Python ≥ 3.14
Recap
- อ่าน heapq docs
- แทนที่แพตเทิร์น
-xที่ยังรกเมื่ออัปรันไทม์ได้ - จำว่า API นี้ต้อง Python ≥ 3.14