Xếp hàng lấy Python
Trong bài viết này, chúng ta sẽ xem xét mô-đun Hàng đợi của Python, đây là một giao diện cho cấu trúc dữ liệu Hàng đợi Show
Hàng đợi PythonHàng đợi là một cấu trúc dữ liệu trong đó phần tử đầu tiên được chèn vào cũng là phần tử đầu tiên xuất hiện. Nó giống như một hàng đợi ngoài đời thực, trong đó người đầu tiên xếp hàng cũng là người đầu tiên ra ngoài Trong Python, chúng ta có thể sử dụng mô-đun q = queue.Queue()4 để tạo hàng đợi các đối tượng Đây là một phần của thư viện Python tiêu chuẩn, vì vậy không cần sử dụng q = queue.Queue()5 Nhập mô-đun bằng cách sử dụng import queue Để tạo một đối tượng Queue, chúng ta có thể khởi tạo nó bằng cách sử dụng q = queue.Queue() Theo mặc định, giá trị này có dung lượng là 0, nhưng nếu bạn muốn đề cập rõ ràng đến nó, bạn có thể làm như vậy bằng cách sử dụng q = queue.Queue(max_capacity) Xếp hàng. get() và hàng đợi. các phương thức put()Chúng ta có thể chèn và truy xuất các giá trị vào Hàng đợi bằng các phương thức q = queue.Queue()6 và q = queue.Queue()7 Hãy tạo một hàng đợi và chèn các số từ 1 đến 5 import queue # Instantiate the Queue object q = queue.Queue() # Insert elements 1 to 5 in the queue for i in range(1, 6): q.put(i) print('Now, q.qsize() =', q.qsize()) # Now, the queue looks like this: # (First) 1 <- 2 <- 3 <- 4 <- 5 for i in range(q.qsize()): print(q.get()) đầu ra ________số 8 Như bạn có thể thấy, đầu ra cho thấy chỉ số đầu tiên thực sự là 1, vì vậy đó là đầu của Hàng đợi. Phần còn lại của các yếu tố theo nó trong một thời trang tương tự Làm trống hàng đợi PythonChúng ta có thể làm trống một đối tượng hàng đợi bằng cách sử dụng q = queue.Queue()8. Điều này đặt kích thước thành 0 và làm trống hàng đợi q = queue.Queue()0 đầu ra q = queue.Queue()1 Trong khi hầu hết các triển khai hàng đợi điển hình có hoạt động q = queue.Queue()9 (hoặc q = queue.Queue(max_capacity)0), mô-đun q = queue.Queue()4 không có phương thức cho việc này Vì vậy, nếu bạn muốn bật các phần tử khỏi hàng đợi, bạn phải tự mình sử dụng một lớp hàng đợi khác. Một giải pháp đơn giản là sử dụng danh sách của Python Chúng tôi sẽ sử dụng q = queue.Queue(max_capacity)2 để chèn các phần tử vào hàng đợi, vì việc chèn xảy ra ở cuối và xóa các phần tử bằng cách sử dụng q = queue.Queue(max_capacity)3, vì phần tử đầu tiên bị xóa q = queue.Queue()7 đầu ra q = queue.Queue()8 Chúng tôi đã viết lớp hàng đợi của riêng mình với hoạt động q = queue.Queue(max_capacity)0. Bây giờ, chúng tôi sẽ chỉ cho bạn cách bạn có thể sử dụng các mô-đun khác để sử dụng các loại Hàng đợi khác Hàng đợi ưu tiên trong PythonHàng đợi ưu tiên là một loại hàng đợi thêm vào hàng đợi trên cơ sở mức độ ưu tiên của một mục, thường là một giá trị số nguyên Các mục có số ưu tiên thấp hơn được ưu tiên cao hơn và ở phía trước hàng đợi, trong khi các mục khác ở phía sau Mô-đun q = queue.Queue()4 cũng hỗ trợ cấu trúc Hàng đợi ưu tiên, vì vậy hãy xem cách chúng tôi có thể sử dụng nó import queue1 đầu ra q = queue.Queue()0 Như bạn có thể thấy, các phần tử được chèn vào dựa trên mức độ ưu tiên của chúng Hàng đợi heapq trong PythonChúng tôi cũng có thể sử dụng mô-đun q = queue.Queue(max_capacity)6 để triển khai hàng đợi ưu tiên của mình q = queue.Queue()1 Vì vậy, chúng tôi đang tạo hàng đợi ưu tiên và xuất hiện từ hàng đợi đó cho đến khi hàng đợi trống. Điều tương tự cũng có thể đạt được bằng cách sử dụng chương trình dưới đây Hàng đợi là nơi chứa dữ liệu. Dữ liệu được nhập trước sẽ bị xóa trước và do đó hàng đợi còn được gọi là “Nhập trước xuất trước” (FIFO). Hàng đợi có hai đầu phía trước và phía sau. Các mục được nhập từ phía sau và lấy ra từ phía trước Trong hướng dẫn Python này, bạn sẽ học Hàng đợi Python hoạt động như thế nào?Hàng đợi có thể dễ dàng so sánh với ví dụ thực tế, hàng người xếp hàng chờ ở quầy bán vé, người đứng trước sẽ lấy vé trước, tiếp theo là người tiếp theo, v.v. Logic tương tự cũng áp dụng cho cấu trúc dữ liệu hàng đợi Dưới đây là một đại diện sơ đồ của hàng đợi Phía sau đại diện cho điểm mà các mục được chèn vào bên trong hàng đợi. Trong ví dụ này, 7 là giá trị cho điều đó Mặt trước đại diện cho điểm mà các mục từ hàng đợi sẽ bị xóa. Nếu bạn xóa một phần tử khỏi hàng đợi, phần tử đầu tiên bạn sẽ nhận được là 1, như thể hiện trong hình Mục 1 là mục đầu tiên được đưa vào hàng đợi và trong khi loại bỏ, mục này là mục đầu tiên xuất hiện. Do đó hàng đợi được gọi là FIRST IN FIRST OUT (FIFO) Trong hàng đợi, các mục được xóa theo thứ tự và không thể xóa ở giữa. Bạn không thể xóa ngẫu nhiên mục 5 khỏi hàng đợi, để làm điều đó, bạn sẽ phải xóa tất cả các mục trước 5. Các mục trong hàng đợi sẽ bị xóa theo thứ tự chúng được chèn vào Các loại hàng đợi trong PythonChủ yếu có hai loại hàng đợi trong Python
Cài đặt hàng đợi PythonRất dễ dàng để làm việc với hàng đợi trong python. Dưới đây là các bước thực hiện để tận dụng hàng đợi trong mã của bạn Bước 1) Bạn chỉ cần nhập mô-đun hàng đợi, như hình bên dưới import queue Mô-đun có sẵn theo mặc định với python và bạn không cần bất kỳ cài đặt bổ sung nào để bắt đầu làm việc với hàng đợi. Có 2 loại hàng đợi FIFO (vào trước ra trước) và LIFO (vào sau ra trước) Bước 2) Để làm việc với hàng đợi FIFO, hãy gọi lớp Hàng đợi bằng mô-đun hàng đợi đã nhập như hình bên dưới import queue6 Bước 3) Để làm việc với hàng đợi LIFO, hãy gọi lớp LifoQueue() như bên dưới import queue7 Các phương thức có sẵn bên trong lớp Queue và LifoQueueSau đây là các phương thức quan trọng có sẵn bên trong lớp Queue và LifoQueue
Ví dụ về hàng đợi nhập trước xuất trướcTrong trường hợp nhập trước xuất trước thì phần tử nào ra trước sẽ ra trước Thêm và mục trong hàng đợiHãy để chúng tôi làm việc trên một ví dụ để thêm một mục trong hàng đợi. Để bắt đầu làm việc với hàng đợi, trước tiên hãy nhập hàng đợi mô-đun, như minh họa trong ví dụ bên dưới Để thêm một mục, bạn có thể sử dụng phương thức put() như trong ví dụ import queue8 Theo mặc định, kích thước của hàng đợi là vô hạn và bạn có thể thêm bất kỳ số lượng mục nào vào đó. Trong trường hợp bạn muốn xác định kích thước của hàng đợi, điều tương tự có thể được thực hiện như sau import queue9 đầu ra q = queue.Queue()0 Bây giờ kích thước của hàng đợi là 5 và sẽ không mất nhiều hơn 5 mục và phương thức q1. full() sẽ trả về true. Thêm bất kỳ mục nào nữa sẽ không thực thi mã nữa Xóa một mục khỏi hàng đợiĐể xóa một mục khỏi hàng đợi, bạn có thể sử dụng phương thức có tên là get(). Phương pháp này cho phép các mục từ hàng đợi khi được gọi Ví dụ sau đây cho thấy cách xóa một mục khỏi hàng đợi q = queue.Queue()1 đầu ra q = queue.Queue()2 Ví dụ hàng đợi vào sau ra trướcTrong trường hợp nhập cuối cùng trong hàng đợi xuất trước, phần tử được nhập cuối cùng sẽ là phần tử đầu tiên xuất hiện Để làm việc với LIFO, tôi. e. , cuối cùng trong hàng đợi ra đầu tiên, chúng ta cần nhập mô-đun hàng đợi và sử dụng phương thức LifoQueue() Thêm và mục trong hàng đợiỞ đây chúng ta sẽ hiểu cách thêm một mục vào hàng đợi LIFO q = queue.Queue()3 Bạn phải sử dụng phương thức put() trên LifoQueue, như trong ví dụ trên Xóa một mục khỏi hàng đợiĐể xóa một mục khỏi LIFOqueue, bạn có thể sử dụng phương thức get() q = queue.Queue()4 đầu raimport queue60 Thêm nhiều hơn 1 mục vào Hàng đợiTrong các ví dụ trên, chúng ta đã thấy cách thêm một mục và xóa mục đó cho FIFO và LIFOqueue. Bây giờ chúng ta sẽ xem cách thêm nhiều mục và xóa mục đó Hàng đợi Python có bị chặn không?Có -- nếu bạn gọi some_queue. get() trong luồng hoặc chức năng chính, chương trình sẽ chặn ở đó cho đến khi một số đối tượng được chuyển qua hàng đợi .
Đâu là hàng đợi tốt nhất cho Python?deque là một lựa chọn mặc định tuyệt vời để triển khai cấu trúc dữ liệu hàng đợi FIFO trong Python . Tôi sẽ cung cấp các đặc điểm hiệu suất mà bạn mong đợi từ việc triển khai hàng đợi tốt và cũng có thể được sử dụng làm ngăn xếp (Hàng đợi LIFO). Đọc toàn bộ loạt bài viết “Cấu trúc dữ liệu cơ bản trong Python” tại đây.
Điều gì xảy ra nếu bạn nhận được từ hàng đợi trống trong Python?Nó trả về True nếu không có phần tử nào trong hàng đợi . Trả về Sai nếu không. |