Computer >> Máy Tính >  >> Lập trình >> Python

Hợp nhất hai mảng được sắp xếp trong Python bằng cách sử dụng heapq?

Trong phần này, chúng ta sẽ thấy cách hai danh sách đã sắp xếp có thể được hợp nhất bằng cách sử dụng mô-đun heapq trong Python. Ví dụ:nếu list1 =[10, 20, 30, 40] và list2 =[100, 200, 300, 400, 500], thì sau khi hợp nhất nó sẽ trả về list3 =[10, 20, 30, 40, 100, 200, 300, 400, 500]

Để thực hiện tác vụ này, chúng tôi sẽ sử dụng mô-đun heapq. Mô-đun này đi kèm với Python dưới dạng Mô-đun Thư viện Chuẩn. Vì vậy, chúng tôi cần nhập nó trước khi sử dụng.

import heapq

Mô-đun heapq có một số thuộc tính. Những thứ này giống như bên dưới -

Phương thức heapq.heapify (có thể lặp lại)

Nó được sử dụng để chuyển đổi một tập dữ liệu có thể lặp lại thành cấu trúc dữ liệu heap.

Phương thức heapq.heappush (heap, phần tử)

Phương thức này được sử dụng để chèn phần tử vào heap. Sau đó, xếp lại toàn bộ cấu trúc heap.

Phương thức heapq.heappop (heap)

Phương thức này được sử dụng để trả về và xóa phần tử khỏi phần trên cùng của heap và thực hiện heapify trên các phần tử còn lại.

Phương thức heapq.heappushpop (heap, phần tử)

Phương thức này được sử dụng để chèn và bật phần tử trong một câu lệnh.

Phương thức heapq.heapreplace (heap, phần tử)

Phương thức này được sử dụng để chèn và bật phần tử trong một câu lệnh. Nó xóa phần tử khỏi gốc của heap, sau đó chèn phần tử vào heap.

Phương thức heapq.nlargest (n, có thể lặp lại, khóa =Không có)

Phương thức này được sử dụng để trả về n phần tử lớn nhất từ ​​heap.

Phương thức heapq.nsmallest (n, có thể lặp lại, khóa =Không có)

Phương thức này được sử dụng để trả về n phần tử nhỏ nhất từ ​​heap.

Mã mẫu

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))

Đầu ra

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]