× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Python Queue: Ví dụ về Fifo, Lifo trong Python Queue

25/03/2022 07:11

Queue là một vùng chứa chứa dữ liệu. Dữ liệu được nhập trước sẽ bị xóa trước, và do đó một Queue còn được gọi là “Nhập trước xuất trước” (FIFO).

Queue là một vùng chứa chứa dữ liệu. Dữ liệu được nhập trước sẽ bị xóa trước, và do đó một Queue còn được gọi là “Nhập trước xuất trước” (FIFO). Queue có hai đầu phía trước và phía sau. Các mục được nhập từ phía sau và loại bỏ từ phía trước.

Queue Python hoạt động như thế nào?

Có thể dễ dàng so sánh Queue với ví dụ trong thế giới thực là dò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 Queue.

Đây là một biểu diễn sơ đồ của Queue:

python queue

Phía sau đại diện cho điểm mà các mục được chèn vào bên trong Queue. 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ừ Queue sẽ bị xóa. Nếu bạn xóa một mục khỏi Queue, phần tử đầu tiên bạn sẽ nhận được là 1, như thể hiện trong hình.

python queue

Mục 1 là mục đầu tiên được chèn vào Queue, và trong khi xóa nó là mục đầu tiên xuất hiện. Do đó Queue được gọi là FIRST IN FIRST OUT (FIFO)

Trong một Queue, các mục được xóa theo thứ tự và không thể bị xóa ở giữa. Bạn chỉ không thể loại bỏ ngẫu nhiên mục 5 khỏi Queue, để 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 Queue sẽ bị xóa theo thứ tự chúng được chèn vào.

Các loại Queue trong Python

Chủ yếu có hai loại Queue trong Python:

  • First in First out Queue: Đối với điều này, phần tử đi trước sẽ là phần tử xuất hiện đầu tiên.
    Để làm việc với FIFO, bạn phải gọi lớp Queue () từ mô-đun Queue.
  • Cuối cùng trong Queue xuất đầu tiên: Ở đây, phần tử được nhập sau cùng sẽ là phần tử xuất hiện đầu tiên.
    Để làm việc với LIFO, bạn phải gọi lớp LifoQueue () từ mô-đun Queue.

Cài đặt Queue Python

Nó rất dễ dàng để làm việc với Queue trong python. Dưới đây là các bước cần làm để sử dụng Queue trong mã của bạn.

Bước 1) Bạn chỉ cần nhập mô-đun Queue, như được hiển thị 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 cài đặt thêm để bắt đầu làm việc với Queue. Có 2 loại Queue FIFO (xuất trước vào trước) và LIFO (nhập trước xuất sau).

Bước 2) Để làm việc với Queue FIFO, hãy gọi lớp Queue bằng cách sử dụng mô-đun Queue được nhập như hình dưới đây:

 

import queue

q1 = queue.Queue()

Bước 3) Để làm việc với Queue LIFO, hãy gọi lớp LifoQueue () như hình dưới đây:



import queue

q1 = queue.LifoQueue()

Các phương thức có sẵn bên trong lớp Queue và LifoQueue

Sau đây là các phương thức quan trọng có sẵn bên trong lớp Queue và LifoQueue:

  • put (item): Thao tác này sẽ đưa mặt hàng vào bên trong Queue.
  • get (): Điều này sẽ trả lại cho bạn một mục từ Queue.
  • void (): Nó sẽ trả về true nếu Queue trống và false nếu có các mục.
  • qsize (): trả về kích thước của Queue.
  • full (): trả về true nếu Queue đầy, ngược lại là false.

Ví dụ về Queue đầu tiên trong đầu tiên

Trong trường hợp ra trước vào trước, phần tử đi trước sẽ là phần tử đi ra đầu tiên.

Thêm và mục trong một Queue

Hãy để chúng tôi làm việc trên một ví dụ để thêm một mục trong Queue. Để bắt đầu làm việc với Queue, trước tiên hãy nhập Queue mô-đun, như thể hiện 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ụ:

 

 

Theo mặc định, kích thước của Queue 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 Queue, bạn có thể thực hiện như sau

import queue

q1 = queue.Queue(5) #The max size is 5.

q1.put(1)

q1.put(2)

q1.put(3)

q1.put(4)

q1.put(5)

print(q1.full()) # will return true.

 

Output:

True

Xóa một mục khỏi Queue

Để xóa một mục khỏi Queue, bạn có thể sử dụng phương thức được gọi là get (). Phương thức này cho phép các mục từ Queue khi được gọi.

Ví dụ sau đây cho thấy cách xóa một mục khỏi Queue.

import queue

q1 = queue.Queue()

q1.put(10)




item1 = q1.get()




print('The item removed from the queue is ', item1)

 

Output:

The item removed from the queue is  10

>>> Tham khảo: Khóa học Python

Ví dụ về Queue Cuối cùng trong Đầu ra

Trong trường hợp cuối cùng trong Queue xuất đầu tiên, phần tử được nhập sau cùng sẽ là phần tử xuất hiện đầu tiên.

Để làm việc với LIFO, tức là, cuối cùng trong Queue ra đầu tiên, chúng ta cần nhập mô-đun Queue và sử dụng phương thức LifoQueue ().

Thêm và mục trong một Queue

Ở đây chúng ta sẽ hiểu cách thêm một mục vào Queue LIFO.

import queue

q1 = queue.LifoQueue()

q1.put(10)

 

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 Queue

Để xóa một mục khỏi LIFOqueue, bạn có thể sử dụng phương thức get ().

 

import queue

q1 = queue.LifoQueue()

q1.put(10)




item1 = q1.get()




print('The item removed from the LIFO queue is ', item1)

 

Output:

The item removed from the LIFO queue is  10

Thêm nhiều hơn 1 mục trong Queue

Trong 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 làm thế nào để thêm nhiều hơn một mục và cũng như loại bỏ nó.

Thêm và mục trong một FIFOqueue

import queue

q1 = queue.Queue()




for i in range(20):

    q1.put(i) # this will additem from 0 to 20 to the queue

 

Remove an item from the FIFOqueue

import queue

q1 = queue.Queue()




for i in range(20):

    q1.put(i) # this will additem from 0 to 20 to the queue




while not q1.empty():

print("The value is ", q1.get()) # get() will remove the item from the queue.

 

Output:

The value is  0

The value is  1

The value is  2

The value is  3

The value is  4

The value is  5

The value is  6

The value is  7

The value is  8

The value is  9

The value is  10

The value is  11

The value is  12

The value is  13

The value is  14

The value is  15

The value is  16

The value is  17

The value is  18

The value is  19

 

Add and item in a LIFOqueue

import queue

q1 = queue.LifoQueue()

for i in range(20):

    q1.put(i) # this will additem from 0 to 20 to the queue

 

Remove an item from the LIFOqueue

import queue

q1 = queue.LifoQueue()

for i in range(20):

    q1.put(i) # this will additem from 0 to 20 to the queue

while not q1.empty():

print("The value is ", q1.get()) # get() will remove the item from the queue.

Output:

The value is  19

The value is  18

The value is  17

The value is  16

The value is  15

The value is  14

The value is  13

The value is  12

The value is  11

The value is  10

The value is  9

The value is  8

The value is  7

The value is  6

The value is  5

The value is  4

The value is  3

The value is  2

The value is  1

The value is  0 

 

Kết: Trên đây là một số kiến thức cơ bản về Queue trong Python mà bạn cần phải nắm rõ khi lập trình Python. Bạn có thể tìm hiểu thêm thông tin về Python tại mục blog của Viện công nghệ thông tin T3H.