Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

รวมสองอาร์เรย์ที่เรียงลำดับใน Python โดยใช้ heapq หรือไม่


ในส่วนนี้ เราจะมาดูกันว่าสามารถรวมรายการที่เรียงลำดับสองรายการโดยใช้โมดูล 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]