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
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
- Career Karma kết hợp bạn với các bootcamp công nghệ hàng đầu
- Truy cập học bổng độc quyền và các khóa học chuẩn bị
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
- Sử dụng lớp hàng đợi PriorityQueue
- Sử dụng mô-đun heapq
» 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ên
hà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 Python
Mô-đ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ách
Về 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ận
Hai 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