Computer >> Máy Tính >  >> Lập trình >> Python

Hàng đợi Python và Deque:Hướng dẫn từng bước

Hàng đợi Python là một thư viện được tích hợp sẵn cho phép bạn tạo danh sách sử dụng quy tắc FIFO, nhập trước xuất trước. Python deque sử dụng quy tắc ngược lại, hàng đợi LIFO hoặc cuối cùng trong đầu ra đầu tiên. Cả hai đều hoạt động trên ngăn xếp và hàng đợi.


Khi bạn đang làm việc bằng Python, bạn có thể muốn tạo một hàng đợi các mục thay vì một danh sách. Ví dụ:giả sử bạn đang viết một chương trình theo dõi lượt đăng ký tham gia một hội nghị. Khi chúng tôi thêm ai đó vào danh sách, bạn muốn đặt họ ở cuối hàng và sau đó bạn muốn họ vượt qua hàng đợi khi những người ở phía trước bắt đầu vào.

Có một thư viện tích hợp sẵn bằng Python được thiết kế để giúp bạn giải quyết các loại vấn đề sau:hàng đợi. Hàng đợi tương tự như ngăn xếp trong Python, với sự khác biệt chính là với hàng đợi, bạn loại bỏ mục ít được thêm gần đây nhất. Mặt khác, trong ngăn xếp, bạn xóa mục được thêm gần đây nhất.

Trong hướng dẫn này, chúng ta sẽ phân tích những điều cơ bản về hàng đợi trong Python và cách bạn có thể triển khai hàng đợi.

Lớp lót hàng đợi

Hữu ích khi làm việc với danh sách Python, hàng đợi hữu ích khi bạn muốn lấy mọi thứ ra khỏi danh sách theo thứ tự mà bạn đưa chúng vào. Để sử dụng ví dụ trước của chúng tôi, khi bạn đang tham dự một hội nghị, bạn nên được đặt sau dòng khi bạn đăng ký lần đầu tiên. Nhưng khi những người trong danh sách bắt đầu tham gia, bạn nên tiến xa hơn trong danh sách.

Hàng đợi khác với mảng và danh sách trong hàng đợi không phải là truy cập ngẫu nhiên — dữ liệu được lưu trữ trong hàng đợi có một thứ tự cụ thể. Vì vậy, nếu bạn muốn thêm một mục vào hàng đợi, nó sẽ được thêm vào cuối. Đây được gọi là first-in , first-out hay gọi tắt là hàng đợi FIFO.

Trong Python, bạn có thể sử dụng một danh sách chuẩn làm hàng đợi. Tuy nhiên, danh sách có thể khá chậm nếu bạn đang chèn và xóa các phần tử vì việc thay đổi các phần tử ở đầu danh sách yêu cầu di chuyển tất cả các phần tử khác trong danh sách xuống. Do đó, nếu bạn cần triển khai danh sách nhập trước, xuất cuối, bạn nên sử dụng hàng đợi.

Hàng đợi Python

Vì vậy, làm thế nào để bạn triển khai một hàng đợi trong Python? Để làm như vậy, chúng ta phải sử dụng thư viện hàng đợi có sẵn. Mô-đun hàng đợi bao gồm một số lớp hữu ích cho hàng đợi, nhưng đối với hướng dẫn này, chúng tôi sẽ tập trung vào queue.Queue lớp học.

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Giả sử chúng tôi đang xây dựng một chương trình theo dõi những người muốn đến xem và xem bộ phim mới nhất tại rạp chiếu phim địa phương. Chúng tôi có thể sử dụng một hàng đợi để theo dõi danh sách chờ những người muốn xem phim.

Đầu tiên, chúng ta cần xác định lớp hàng đợi của chúng ta. Chúng tôi có thể làm điều đó bằng cách sử dụng mã sau:

from queue import Queue
waitlist = Queue()

Bây giờ chúng tôi đã sẵn sàng để tạo hàng đợi của mình. put() hàm cho phép dữ liệu được put vào hàng đợi. Trong đoạn mã dưới đây, chúng tôi sẽ thêm năm người vào danh sách chờ, những người vừa đăng ký xem phim:

waitlist.put('Erin')
waitlist.put('Samantha')
waitlist.put('Joe')
waitlist.put('Martin')
waitlist.put('Helena')

Bây giờ chúng tôi đã thêm vào hàng đợi năm tên của chúng tôi. Erin là người đầu tiên trong hàng đợi của chúng tôi, sau đó là Samantha, và cứ tiếp tục như vậy cho đến khi chúng tôi đến gặp Helena, người cuối cùng. Chúng tôi có thể chứng minh điều này bằng cách sử dụng get() chức năng, như vậy:

print(waitlist.get())

Mã của chúng tôi trả về như sau:

Erin

Như bạn có thể thấy, Erin là người đầu tiên trong hàng đợi của chúng tôi. Nếu chúng tôi muốn in ra hai tên đầu tiên có trong hàng đợi, chúng tôi sẽ sử dụng get() chức năng hai lần:

print(waitlist.get())
print(waitlist.get())

Mã của chúng tôi trả về như sau:

Erin
Samantha

Ví dụ về Python Deque

Nhưng điều gì sẽ xảy ra nếu chúng ta muốn thêm và xóa một số mục từ một trong hai đầu hàng đợi của mình? Đây là nơi hàm deque xuất hiện. Bằng cách sử dụng deque, chúng ta có thể tạo một hàng đợi kết thúc kép, nơi chúng ta có thể thêm và xóa các phần tử khỏi đầu hoặc cuối hàng đợi. Deques là last-in , first-out , gọi tắt là LIFO.

Hãy sử dụng ví dụ tương tự như trên:lưu trữ tên trong danh sách chờ cho một bộ phim. Đầu tiên, chúng tôi sẽ khai báo hàm deque của mình:

from collections import deque
waitlist = deque()

Bây giờ chúng tôi đã khởi tạo deque của mình, chúng tôi có thể thêm danh sách các tên trong danh sách chờ vào deque của chúng tôi:

waitlist.append('Erin')
waitlist.append('Samantha')
waitlist.append('Joe')
waitlist.append('Martin')
waitlist.append('Helena')

Như bạn có thể thấy, chúng tôi đã sử dụng append() chức năng để đưa một mục vào hàng đợi của chúng tôi. Để xem các giá trị được lưu trữ trong danh sách chờ của chúng tôi, chúng tôi có thể sử dụng mã sau:

print(waitlist)

Mã của chúng tôi trả về như sau:

deque(['Erin', 'Samantha', 'Joe', 'Martin', 'Helena'])

Như bạn có thể thấy, dữ liệu của chúng tôi đã được lưu trữ theo thứ tự chúng tôi đã chèn nó vào deque của mình. Nhưng nếu chúng ta muốn xóa mục đầu tiên khỏi hàng đợi của mình thì sao? Chúng ta có thể sử dụng popleft() chức năng để hoàn thành mục tiêu này. Đây là một ví dụ:

waitlist.popleft()
print(waitlist)

Mã của chúng tôi đã xóa mục đầu tiên trong danh sách của chúng tôi - Erin - và trả về như sau:

deque(['Samantha', 'Joe', 'Martin', 'Helena'])

Nếu chúng ta muốn xóa tất cả các mục trong deque của mình, chúng ta có thể sử dụng hàm clear ():

deque.clear()
print(waitlist)

Kết quả của mã của chúng tôi như sau:

deque([])

Như bạn có thể thấy, deque của chúng ta trống rỗng, nhưng đối tượng vẫn tồn tại.

Kết luận

Đó là nó! Trong bài viết này, chúng tôi đã thảo luận về cách hàng đợi là một loại cấu trúc dữ liệu cho phép bạn áp dụng phương pháp lưu trữ nhập trước, xuất trước để lưu trữ dữ liệu. Một ví dụ về việc sử dụng hàng đợi là giữ một danh sách chờ cho một sản phẩm mới.

Chúng tôi cũng đã thảo luận về cách bạn có thể sử dụng deque để tạo hàng đợi kết thúc kép, nơi bạn có thể thêm và xóa các phần tử khỏi hàng đợi của mình. Bây giờ, bạn đã sẵn sàng để bắt đầu viết các truy vấn và câu trả lời của riêng mình!

Python được sử dụng trong nhiều môi trường lập trình chuyên nghiệp. Tải xuống ứng dụng Career Karma miễn phí hôm nay để tìm hiểu về cách Python có thể giúp bạn bắt đầu sự nghiệp công nghệ trong mơ của mình!