ในส่วนนี้ เราจะมาดูกันว่าสามารถรวมรายการที่เรียงลำดับสองรายการโดยใช้โมดูล heapq ใน Python ได้อย่างไร ตัวอย่างเช่น หาก list1 =[10, 20, 30, 40] และ list2 =[100, 200, 300, 400, 500] จากนั้นเมื่อรวมเข้าด้วยกันแล้ว จะคืนค่า list3 =[10, 20, 30, 40, 100, 200, 300, 400, 500]
ในการดำเนินการนี้ เราจะใช้โมดูล heapq โมดูลนี้มาพร้อมกับ Python เป็นโมดูลไลบรารีมาตรฐาน เราจึงต้องนำเข้าก่อนใช้งาน
import heapq
โมดูล heapq มีคุณสมบัติบางอย่าง เหล่านี้เป็นเหมือนด้านล่าง −
วิธีการ heapq.heapify(iterable)
ใช้เพื่อแปลงชุดข้อมูลที่ทำซ้ำได้เป็นโครงสร้างข้อมูลแบบฮีป
วิธี heapq.heappush(ฮีป องค์ประกอบ)
วิธีนี้ใช้เพื่อแทรกองค์ประกอบลงในฮีป หลังจากนั้น ฮีปโครงสร้างฮีปทั้งหมดอีกครั้ง
วิธีการ heapq.heappop(heap)
วิธีนี้ใช้เพื่อส่งคืนและลบองค์ประกอบออกจากด้านบนของฮีปและดำเนินการ heapify กับองค์ประกอบที่เหลือ
วิธีการ heapq.heappushpop(ฮีป องค์ประกอบ)
วิธีนี้ใช้เพื่อแทรกและป๊อปองค์ประกอบในคำสั่งเดียว
วิธีการ heapq.heapreplace(ฮีป องค์ประกอบ)
วิธีนี้ใช้เพื่อแทรกและป๊อปองค์ประกอบในคำสั่งเดียว มันลบองค์ประกอบออกจากรูทของฮีป จากนั้นแทรกองค์ประกอบลงในฮีป
วิธีการ heapq.nlargest(n, iterable, key=None)
วิธีนี้ใช้เพื่อคืนค่า n องค์ประกอบที่ใหญ่ที่สุดจากฮีป
วิธีการ heapq.nsmallest(n, iterable, key=None)
วิธีนี้ใช้เพื่อคืนค่า n องค์ประกอบที่เล็กที่สุดจากฮีป
โค้ดตัวอย่าง
import heapq first_list = [45, 12, 63, 95, 74, 21, 20, 15, 36] second_list = [42, 13, 69, 54, 15] first_list = sorted(first_list) second_list = sorted(second_list) print('First sorted list: ' + str(first_list)) print('Second sorted list: ' + str(second_list)) final_list = list(heapq.merge(first_list, second_list)) print('The final list: ' + str(final_list))
ผลลัพธ์
First sorted list: [12, 15, 20, 21, 36, 45, 63, 74, 95] Second sorted list: [13, 15, 42, 54, 69] The final list: [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]