Priorytet kolejki Pythona

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

Kolejka priorytetowa Pythona: przewodnik

A przechowuje dane kolejki priorytetowej Pythona w określonej kolejności. Istnieją dwa sposoby na zaimplementowanie kolejki priorytetowej w Pythonie:. Korzystanie z klasy kolejki i modułu heapq

Możesz posortować dane na podstawie wartości każdego elementu na liście. Na przykład możesz chcieć, aby najwyższa wartość pojawiła się na liście jako pierwsza, a najniższa na ostatniej.

jest kolejką oczekujących priorytetów. Kolejka oczekujących priorytetów to dane struktura przechowująca dane na podstawie wartości klucza w porządku rosnącym. Daje to łatwy dostęp do najmniejszej i największej wartości w kolejce.

Ten samouczek wyjaśni, dlaczego nie należy używać listy do tworzenia kolejek priorytetowych. Pokażemy Ci dwa bardziej wydajne podejścia, których możesz użyć do stworzenia kolejki priorytetowej Pythona.

Co to jest kolejka priorytetowa Pythona?

Kolejki priorytetowe są zmodyfikowaną wersją kolejka przechowująca dane, w której element ma najwyższy priorytet. Priorytet każdego elementu w kolejce priorytetowej jest ustalany na podstawie wartości elementu.

W obliczeniach kolejki są strukturami danych, które są elementami pamięci w kolejności FIFO (pierwszy w kolejności). -Na zewnątrz). Istnieje kilka scenariuszy, w których korzystanie z tej funkcji może być pomocne.

Załóżmy na przykład, że tworzysz aplikację do śledzenia zamówień dla restauracji. Zamawiający musi najpierw zostać obsłużony przed osobami, składając zamówienie później. . Aby śledzić polecenia, musisz użyć kolejki

Istnieją dwa sposoby ustawienia kolejki priorytetowej w Pythonie:

  • Korzystanie z klasy PriorityQueue Queue
  • Korzystanie z modułu heapq

Możesz ustawić kolejkę priorytetową za pomocą struktury listy, ale ta strategia jest mniej wydajna niż użycie klasy kolejki lub modułu PriorityQueue heapq

Płyta kolejki priorytetowej:. Queue.PriorityQueue

queue.PriorityQueue tworzy kolejkę priorytetową Pythona. Ta klasa jest częścią biblioteki kodu Pythona. Musisz zaimportować bibliotekę kolejek do użycia tej klasy. Aby pobrać element z PriorityQueue, możesz użyć metody get().

Aby uzyskać dostęp do klasy PriorityQueue, musimy zaimportować ją do naszego kodu, co możemy zrobić za pomocą tego instrukcji import Pythona :

Załóżmy, że chcemy utworzyć kolejkę d` pierwszeństwo oczekiwania na posiadaczy biletów na kon rt. Możemy to zrobić za pomocą tego kodu:

Nasz kod zwraca:

W naszym kodzie musimy najpierw zaimportować klasę PriorityQueue z biblioteki file, inicjujemy kolejka priorytetowa o nazwie ticket_holders. Następnie umieszczamy trzy krotki w naszej kolejce priorytetowej, numery biletów do sklepu i nazwy powiązane z biletem.

Używamy pętli Pythona do sprawdzenia każdego elementu w kolejce priorytetów ticket_holders . Następnie otrzymujemy ten element za pomocą get().

queue.PriorityQueue metoda jest skuteczna i łatwa w użyciu, co czyni ją doskonałym wyborem, gdy potrzebujesz aby utworzyć kolejkę oczekujących priorytetów.

Moduł kolejki priorytetowej heapq Pythona

Moduł heapq pozwala zdefiniować kolejkę priorytetową Pythona. Struktura danych heapq usuwa elementy według priorytetu. Najniższa wartość ma najniższy priorytet, a najwyższa wartość ma najwyższy priorytet w strukturze heapq

Przed może korzystać z modułu heapq, musimy najpierw zaimportować go do naszego kodu za pomocą następującej instrukcji importu:

Albo dos przejdź do naszego poprzedniego przykładu. Załóżmy, że chcemy utworzyć kolejkę priorytetową do przechowywania informacji o posiadaczach biletów na koncercie. Moglibyśmy to zrobić za pomocą modułu heapq i tego programu:

Nasz kod zwraca:

Najpierw zaimportowaliśmy bibliotekę heapq, a następnie zainicjowaliśmy Zmienna Pythona o nazwie ticket_holders. Użyliśmy metody heappush (), aby umieścić trzy krotki w naszej kolejce priorytetowej. Ta kolejka przechowuje numery biletów dla każdego posiadacza biletu oraz imię i nazwisko każdego posiadacza biletu.

Następnie utworzyliśmy pętlę podczas przeglądania każdego elementu w naszej kolejce priorytetowej. Ta pętla usuwa element z góry kolejki oczekujących przy użyciu heappop(). Następnie usunięty element jest drukowany na konsoli. Jak widać, wszystkie pozycje w naszej kolejce są drukowane w kolejności priorytetów.

Dlaczego nie powinieneś prowadzić listy

Technicznie możesz utworzyć kolejkę priorytetową za pomocą < a href="/python-network/">lista Pythona struktura danych. Aby to zrobić, musiałbyś utworzyć listę, a następnie posortować je w kolejności rosnącej.

Jest to jednak stosunkowo nieefektywny sposób na utrzymanie kolejki priorytetowej. Podczas edytowania pozycji na liście musisz zmienić jej kolejność, co zajmuje trochę czasu.

Możesz użyć tradycyjnej listy jako kolejki priorytetowej, jeśli potrzebujesz tylko przechowywać kilka wartości. Ale jeśli chcesz stworzyć większą kolejkę, listy nie są dobrą opcją

Dla odniesienia spójrzmy na przykład kolejki priorytetowej przy użyciu list. Załóżmy, że chcemy utworzyć kolejkę priorytetową, która przechowuje kolejność posiadaczy biletów, którzy powinni zostać wpuszczeni na pierwszy koncert. Do utworzenia tej kolejki moglibyśmy użyć następującego kodu:

Nasz kod zwraca:

stworzyliśmy listę o nazwie ticket_holders, dodaliśmy do niej trzy krotki. Każda krotka zawierała numer biletu posiadacza biletu i jego nazwę. Następnie użyliśmy funkcji sort() Pythona, aby posortować listę posiadaczy biletów w odwrotnej kolejności.

Stworzyliśmy pętlę o długim czasie, która przechodzi przez każdy element w lista posiadaczy biletów i pozycja na górze listy. Następnie nasz kod drukuje usunięty element w konsoli.

Wniosek

Dwa najczęstsze sposoby tworzenia priorytetu kolejki to użycie modułu heapq lub kolejki . Klasa PriorityQueue. Chociaż technicznie możliwe jest użycie listy jako kolejki priorytetowej, to podejście nie działa dobrze.

W tym samouczku omówiono, odnosząc się do przykładów, jak utworzyć kolejkę priorytetową w Pythonie. z wiedzą potrzebną do tworzenia kolejek priorytetowych jak profesjonalista w Pythonie!

Więcej wskazówek dotyczących nauki języka Python można znaleźć w naszym Przewodniku po Pythonie .