Priorytet kolejki Pythona
__del__ |
__delete__ |
__main__ Python module |
ast Python module |
code Python module |
COM PHP module |
Data Structures PHP module |
dis Python module |
Ev PHP module |
exp |
FFI PHP module |
heapq Python module |
iat |
imp Python module |
io Python module |
JavaScript |
Network PHP module |
numbers Python module |
os Python module |
PS PHP module |
Python functions |
queue Python module |
Rar PHP module |
re Python module |
StackOverflow |
stat Python module |
struct Python module |
time Python module |
UI PHP module
Michael Zippo
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:
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!