Làm cách nào để bạn sắp xếp hàng đợi ưu tiên trong python?
Hàng đợi ưu tiên Python lưu trữ dữ liệu theo một thứ tự cụ thể. Có hai cách để triển khai hàng đợi ưu tiên trong Python. sử dụng lớp hàng đợi và sử dụng mô-đun heapq Show
Bạn có thể muốn sắp xếp dữ liệu dựa trên giá trị của từng mục trong danh sách. Chẳng hạn, bạn có thể muốn giá trị cao nhất xuất hiện đầu tiên trong danh sách và giá trị thấp nhất xuất hiện cuối cùng trong danh sách Tìm trận đấu Bootcamp của bạn
Tên Họ Điện thoại . By continuing you agree to our Terms of Service and Privacy Policy, and you consent to receive offers and opportunities from Career Karma by telephone, text message, and email. Đó là nơi hàng đợi ưu tiên xuất hiện. Hàng đợi ưu tiên là cấu trúc dữ liệu lưu trữ dữ liệu dựa trên giá trị của các khóa theo thứ tự tăng dần. Điều này cho phép bạn dễ dàng truy cập giá trị nhỏ nhất và lớn nhất trong hàng đợi Hướng dẫn này sẽ thảo luận về lý do tại sao bạn không nên sử dụng danh sách để tạo hàng đợi ưu tiên. Chúng tôi sẽ chỉ cho bạn hai cách tiếp cận hiệu quả hơn mà bạn có thể sử dụng để tạo hàng đợi ưu tiên Python Hàng đợi ưu tiên Python là gì?Hàng đợi ưu tiên là phiên bản sửa đổi của hàng đợi lưu trữ dữ liệu theo thứ tự phần tử nào có mức độ ưu tiên cao nhất. Mức độ ưu tiên của từng phần tử trong hàng đợi ưu tiên được quyết định tùy thuộc vào giá trị của phần tử Trong khoa học máy tính, hàng đợi là cấu trúc dữ liệu lưu trữ các mục theo thứ tự nhập trước, xuất trước (FIFO). Có một vài tình huống sử dụng cấu trúc này có thể hữu ích Chẳng hạn, giả sử bạn đang xây dựng một ứng dụng theo dõi đơn đặt hàng cho một nhà hàng. Người đặt món trước phải được phục vụ trước người đặt món sau. Để theo dõi các đơn đặt hàng, bạn sẽ muốn sử dụng hàng đợi Có hai cách để xác định hàng đợi ưu tiên trong Python
» THÊM. Câu lệnh chuyển đổi Python. Hướng dẫn cách thực hiện Bạn có thể xác định hàng đợi ưu tiên bằng cấu trúc danh sách. Tuy nhiên, chiến lược này kém hiệu quả hơn so với việc sử dụng lớp hàng đợi PriorityQueue hoặc mô-đun heapq Hàng đợi ưu tiên Python. xếp hàng. Hàng đợi ưu tiênhàng đợi. Lớp PriorityQueue tạo hàng đợi ưu tiên Python. Lớp này là một phần của thư viện hàng đợi Python. Bạn cần nhập thư viện hàng đợi để sử dụng lớp này. Để truy xuất một mục từ PriorityQueue, bạn có thể sử dụng phương thức get() Để truy cập lớp PriorityQueue, chúng ta cần nhập nó vào mã của mình, điều này chúng ta có thể thực hiện bằng cách sử dụng câu lệnh nhập Python này from queue import PriorityQueue Giả sử chúng tôi muốn tạo hàng đợi ưu tiên cho những người có vé tại một buổi hòa nhạc địa phương. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này from queue import PriorityQueue ticket_holders = PriorityQueue() ticket_holders.put((3, 'Paul')) ticket_holders.put((1, 'Miles')) ticket_holders.put((2, 'Dani')) while not ticket_holders.empty(): item = ticket_holders.get() print(item) mã của chúng tôi trả về (1, 'Miles') (2, 'Dani') (3, 'Paul') Trong mã của chúng tôi, trước tiên chúng tôi nhập lớp PriorityQueue từ thư viện hàng đợi, sau đó chúng tôi khởi tạo một hàng đợi ưu tiên có tên là ticket_holders. Tiếp theo, chúng tôi chèn ba bộ dữ liệu vào hàng đợi ưu tiên của chúng tôi, lưu trữ số vé và tên được liên kết với vé Chúng tôi sử dụng vòng lặp while của Python để chạy qua từng mục trong hàng đợi ưu tiên của ticket_holders. Sau đó, chúng tôi truy xuất mục đó bằng cách sử dụng get() hàng đợi. Phương thức PriorityQueue hiệu quả và dễ sử dụng, khiến nó trở thành lựa chọn tuyệt vời khi bạn cần tạo hàng đợi ưu tiên Hàng đợi ưu tiên Mô-đun heapq PythonMô-đun heapq cho phép bạn xác định hàng đợi ưu tiên Python. Cấu trúc dữ liệu heapq loại bỏ các mục theo thứ tự ưu tiên của chúng. Giá trị thấp nhất có mức ưu tiên thấp nhất và giá trị cao nhất có mức ưu tiên cao nhất trong cấu trúc heapq » THÊM. Python sqrt(). Hướng dẫn cách thực hiện Trước khi chúng tôi có thể sử dụng mô-đun heapq, trước tiên chúng tôi phải nhập mô-đun đó vào mã của mình bằng cách sử dụng câu lệnh nhập sau import heapq Hãy quay lại ví dụ trước đó của chúng tôi. Giả sử chúng ta muốn tạo một hàng đợi ưu tiên để lưu trữ thông tin về những người có vé tại một buổi hòa nhạc. Chúng tôi có thể làm như vậy bằng cách sử dụng mô-đun heapq và chương trình này import heapq ticket_holders = [] heapq.heappush(ticket_holders, (3, 'Paul')) heapq.heappush(ticket_holders, (1, 'Miles')) heapq.heappush(ticket_holders, (2, 'Dani')) while ticket_holders: item = heapq.heappop(ticket_holders) print(item) mã của chúng tôi trả về (1, 'Miles') (2, 'Dani') (3, 'Paul') Đầu tiên, chúng tôi đã nhập thư viện heapq, sau đó chúng tôi khởi tạo một biến Python có tên là ticket_holders. Chúng tôi đã sử dụng phương thức heappush() để đẩy ba bộ dữ liệu vào hàng đợi ưu tiên của chúng tôi. Hàng đợi này lưu số vé của từng người giữ vé và tên của từng người giữ vé Sau đó, chúng tôi đã tạo một vòng lặp while để lặp qua từng mục trong hàng đợi ưu tiên của chúng tôi. Vòng lặp này loại bỏ mục ở đầu hàng đợi bằng cách sử dụng heappop(). Sau đó, mục đã xóa được in ra bàn điều khiển. Như bạn có thể thấy, tất cả các mục trong hàng đợi của chúng tôi được in ra theo thứ tự ưu tiên của chúng Tại sao bạn không nên giữ một danh sáchVề mặt kỹ thuật, bạn có thể tạo hàng đợi ưu tiên bằng cách sử dụng cấu trúc dữ liệu danh sách Python. Để làm như vậy, bạn sẽ tạo một danh sách, sau đó sắp xếp nó theo thứ tự tăng dần Tuy nhiên, đây là cách tương đối kém hiệu quả để duy trì hàng đợi ưu tiên. Khi bạn thay đổi các mục trong danh sách, bạn sẽ cần sắp xếp lại thứ tự danh sách, việc này sẽ mất thời gian Bạn có thể sử dụng danh sách truyền thống làm hàng đợi ưu tiên nếu bạn chỉ cần lưu trữ một vài giá trị. Tuy nhiên, nếu bạn đang muốn tạo một hàng đợi lớn hơn, danh sách không phải là một lựa chọn tốt » THÊM. Cách viết mã dãy Fibonacci bằng Python Để tham khảo, hãy xem qua một ví dụ về hàng đợi ưu tiên sử dụng danh sách. Giả sử chúng ta muốn tạo một hàng đợi ưu tiên lưu trữ thứ tự của những người có vé sẽ được vào xem buổi hòa nhạc trước. Chúng ta có thể sử dụng đoạn mã sau để tạo hàng đợi này ticket_holders = [] ticket_holders.append((3, 'Paul')) ticket_holders.append((1, 'Miles')) ticket_holders.append((2, 'Dani')) ticket_holders.sort(reverse=True) while ticket_holders: item = ticket_holders.pop() print(item) mã của chúng tôi trả về "Career Karma bước vào cuộc đời tôi khi tôi cần nó nhất và nhanh chóng giúp tôi phù hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi đã tìm được công việc mơ ước phù hợp với giá trị và mục tiêu của mình trong cuộc sống. " Venus, Kỹ sư phần mềm tại Rockbot Find Your Bootcamp Match(1, 'Miles') (2, 'Dani') (3, 'Paul') Chúng tôi đã tạo một danh sách có tên là ticket_holders, sau đó chúng tôi đã thêm ba bộ dữ liệu vào danh sách. Mỗi bộ dữ liệu chứa số vé của người giữ vé và tên của họ. Sau đó, chúng tôi đã sử dụng hàm sort() của Python để sắp xếp danh sách những người có vé theo thứ tự ngược lại Chúng tôi đã tạo một vòng lặp lặp lại qua mọi mục trong danh sách ticket_holders và mục ở đầu danh sách. Sau đó, mã của chúng tôi in mục đã xóa ra bảng điều khiển Sự kết luậnHai cách phổ biến nhất để tạo hàng đợi ưu tiên là sử dụng mô-đun heapq hoặc hàng đợi. lớp PriorityQueue. Mặc dù về mặt kỹ thuật, bạn có thể sử dụng danh sách làm hàng đợi ưu tiên, nhưng phương pháp này không mở rộng tốt Hướng dẫn này đã thảo luận, có tham khảo các ví dụ, cách tạo hàng đợi ưu tiên trong Python. Bây giờ, bạn đã được trang bị kiến thức cần thiết để bắt đầu tạo hàng đợi ưu tiên của riêng mình như một chuyên gia Python Để được hướng dẫn thêm về cách học Python, hãy xem toàn bộ hướng dẫn Cách học Python của chúng tôi Xếp hạng bài viết này Về chúng tôi. Career Karma là một nền tảng được thiết kế để giúp người tìm việc tìm kiếm, nghiên cứu và kết nối với các chương trình đào tạo việc làm để thăng tiến trong sự nghiệp của họ. Tìm hiểu về ấn phẩm CK Chúng tôi có thể sắp xếp hàng đợi ưu tiên không?Hàng đợi ưu tiên này sẽ được sắp xếp theo cùng bộ so sánh với tập hợp đã cho hoặc theo thứ tự tự nhiên của các phần tử nếu tập hợp được sắp xếp theo thứ tự tự nhiên của các phần tử của nó
Hàng đợi ưu tiên có tự động sắp xếp Python không?Hàng đợi ưu tiên không được sắp xếp . Hàng đợi ưu tiên chỉ đảm bảo rằng khi bạn gọi get() , nó sẽ trả về cho bạn mục ưu tiên cao nhất.
Hàng đợi ưu tiên được tổ chức như thế nào?Hàng đợi ưu tiên là một loại hàng đợi đặc biệt trong đó mỗi phần tử được liên kết với một giá trị ưu tiên . Và, các yếu tố được phục vụ trên cơ sở ưu tiên của họ. Tức là các phần tử có mức độ ưu tiên cao hơn sẽ được phục vụ trước. Tuy nhiên, nếu các phần tử có cùng mức độ ưu tiên xuất hiện, chúng sẽ được phục vụ theo thứ tự của chúng trong hàng đợi.
Sắp xếp nào sử dụng hàng đợi ưu tiên?Phân loại theo nhóm. Chúng ta có thể sử dụng bất kỳ hàng đợi ưu tiên nào để phát triển phương pháp sắp xếp . Chúng tôi chèn tất cả các khóa cần sắp xếp vào hàng đợi ưu tiên theo định hướng tối thiểu, sau đó lặp lại việc xóa khóa tối thiểu để xóa tất cả theo thứ tự. Khi sử dụng heap cho hàng đợi ưu tiên, chúng ta thu được heapsort. |