Làm cách nào để cài đặt heapq trong Python?
Hàng đợi ưu tiên là hàng đợi trong đó các phần tử có một tham số khác được gọi là mức độ ưu tiên. Dựa trên mức độ ưu tiên của phần tử, các phần tử đó được đẩy/bật khỏi Hàng đợi trước Show Mô-đun này sử dụng một đống nhỏ nhị phân để xây dựng hàng đợi ưu tiên Thuộc tính chính của cấu trúc dữ liệu hàng đợi heap này là phần tử nhỏ nhất luôn được bật ra trước Ngoài ra, một khi bất kỳ phần tử nào được đẩy/bật, loại cấu trúc tương tự sẽ được duy trì Cấu trúc dữ liệu này có một số lượng lớn các ứng dụng, bao gồm sắp xếp Hãy hiểu làm thế nào bây giờ chúng ta có thể sử dụng mô-đun này Hiểu mô-đun heapq PythonMô-đun này là một phần của thư viện tiêu chuẩn, vì vậy không cần cài đặt riêng mô-đun này bằng cách sử dụng pip Để nhập mô-đun heapq, chúng ta có thể làm như sau import heapq Trong mô-đun
Hãy lấy một ví dụ đơn giản về việc xây dựng hàng đợi ưu tiên từ một danh sách các số nguyên bình thường import heapq a = [1, 4, 3, 5, 2] print("List =", a) # Convert the iterable (list) into a min-heap in-place heapq.heapify(a) print("Min Heap =", a) đầu ra List = [1, 4, 3, 5, 2] Min Heap = [1, 2, 3, 5, 4] Như bạn có thể thấy, phương thức import heapq a = [1, 4, 3, 5, 2] print("List =", a) # Convert the iterable (list) into a min-heap in-place heapq.heapify(a) print("Min Heap =", a)4 sửa đổi danh sách tại chỗ và chuyển đổi nó thành min-heap Để quan sát lý do tại sao nó là một đống nhỏ, chỉ cần vẽ biểu diễn cây của cả hai danh sách Danh sách cũ – Biểu diễn câyĐối với một biểu diễn min-heap từ một danh sách, đối với một nút có chỉ số _______1_______5, các phần tử con của nó có các chỉ số _______1_______6 và _______1_______7 Đối với một đống nhỏ, cha mẹ phải nhỏ hơn cả hai con của nó Lưu lượng đống tối thiểuNhư bạn có thể thấy, danh sách thứ hai thực sự tuân theo thuộc tính min-heap của chúng ta. Vì vậy, chúng tôi đã xác minh rằng phương pháp import heapq a = [1, 4, 3, 5, 2] print("List =", a) # Convert the iterable (list) into a min-heap in-place heapq.heapify(a) print("Min Heap =", a)4 cung cấp cho chúng tôi heap tối thiểu chính xác Bây giờ chúng tôi sẽ đẩy và bật đến/từ đống của chúng tôi import heapq a = [1, 4, 3, 5, 2] print("List =", a) # Convert the iterable (list) into a min-heap in-place heapq.heapify(a) print("Min Heap =", a) # Use heappush heapq.heappush(a, 10) print("After heappush(), Min Heap =", a) # Use array indexing to get the smallest element print(f"Smallest element in the heap queue = {a[0]}") # Use heappop() and return the popped element popped_element = heapq.heappop(a) print(f"Popped element = {popped_element}, Min Heap = {a}") đầu ra List = [1, 4, 3, 5, 2] Min Heap = [1, 2, 3, 5, 4] After heappush(), Min Heap = [1, 2, 3, 5, 4, 10] Smallest element in the heap queue = 1 Popped element = 1, Min Heap = [2, 4, 3, 5, 10] Như bạn có thể thấy, chúng ta có thể dễ dàng thực hiện các thao tác mong muốn trên hàng đợi heap này. Bây giờ chúng ta hãy xem việc sử dụng min-heap này để sắp xếp danh sách của chúng ta bằng cách sử dụng heapsort import heapq def heapsort(iterable): h = [] for value in iterable: # Push the elements onto the heap heapq.heappush(h, value) # Keep popping the smallest elements and appending them to our sorted list return [heapq.heappop(h) for i in range(len(h))] sorted_list = heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0]) print(sorted_list) đầu ra [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Tuyệt. Thật vậy, chúng tôi đã sử dụng thuộc tính hàng đợi heap để sắp xếp danh sách của chúng tôi Phần kết luậnTrong bài viết này, chúng ta đã tìm hiểu về cách sử dụng mô-đun heapq trong Python và xem cách chúng ta có thể sử dụng thuộc tính min-heap để sắp xếp danh sách không có thứ tự Heapq được triển khai bằng Python như thế nào?Hàng đợi heap là một cấu trúc cây đặc biệt trong đó mỗi nút cha nhỏ hơn hoặc bằng nút con của nó. Trong python, nó được triển khai bằng cách sử dụng mô-đun heapq . Sẽ rất hữu ích khi triển khai các hàng đợi ưu tiên trong đó mục hàng đợi có trọng số cao hơn được ưu tiên hơn trong quá trình xử lý.
Nhập heapq trong Python là gì?Mã nguồn. Lib/heapq. py. Mô-đun này cung cấp triển khai thuật toán hàng đợi đống, còn được gọi là thuật toán hàng đợi ưu tiên . Heaps là cây nhị phân mà mọi nút cha có giá trị nhỏ hơn hoặc bằng bất kỳ nút con nào của nó.
Heapq có phải là một phần của Python không?Mô-đun heapq Python là một phần của thư viện chuẩn . Nó thực hiện tất cả các hoạt động heap cấp thấp cũng như một số cách sử dụng phổ biến cấp cao cho heap. Hàng đợi ưu tiên là một công cụ mạnh mẽ có thể giải quyết các vấn đề đa dạng như viết trình lập lịch trình email, tìm đường đi ngắn nhất trên bản đồ hoặc hợp nhất các tệp nhật ký.
Có cần nhập Heapq không?Trước hết, bạn phải nhập mô-đun heapq . Hãy xem xét ví dụ danh sách a như được đưa ra dưới đây. Nếu chúng ta đống danh sách này, kết quả sẽ như sau. |