Przykład kolejki priorytetowej Pythona

Przykład kolejki priorytetowej Pythona
Python jest jednym z najbardziej dominujących i szeroko stosowanych języków programowania. Podobnie jak inne języki programowania, zapewnia wiele funkcji i bibliotek, których można użyć do wdrożenia podstawowych struktur danych. Kolejka jest bardzo ważną strukturą danych; Jednak jego funkcjonalność może się różnić w zależności od tego, jak jest wdrażana. Jednym z najważniejszych funkcji kolejki jest kolejka priorytetowa. W tym artykule dowiemy się, czym jest kolejka priorytetowa i przyjrzyj się różnym wdrożeniu kolejki priorytetowej w Python.

Co to jest kolejka priorytetowa?

Jak sama nazwa mówi, kolejką priorytetową jest kolejka zaprogramowana do funkcjonowania zgodnie z określonym zamówieniem. Jeśli mówimy o prostej kolejce, działa to na zamówieniu „FIFO (pierwsze w pierwszym wychodzeniu)”, ja.mi., Element włożony do kolejki najpierw zostanie również wydobyty. Czasami jednak możemy nie chcieć, aby nasza kolejka działała w ten sposób; Możemy raczej chcieć, aby podążył za inną określoną kolejnością. W tym miejscu wchodzą kolejki priorytetowe, co pozwala nam wyodrębnić elementy kolejki w wybranej kolejności. Będziesz mógł dowiedzieć się więcej o ich użyciu, przechodząc przez ich różne wdrożenia omówione poniżej:

Metody wdrożenia kolejki priorytetowej w Pythonie:

Możemy użyć trzech różnych metod wdrożenia kolejki priorytetowych w Python, i.mi., za pomocą listy, modułu priorytetowego i modułu heapq. Omówimy wszystkie trzy z tych metod jeden po drugim za pomocą odpowiednich przykładów; Jednak podstawowe dane, których będziemy używać dla wszystkich tych przykładów, pozostaną takie same, abyś mógł łatwo porównać te różne metody implementacji.

Uwaga: W celu wdrożenia wszystkich tych przykładów w Python użyliśmy narzędzia Spyder z systemem operacyjnym Windows 10.

Metoda nr 1: Korzystanie z listy w Python:

W tym przykładzie chcemy wdrożyć kolejkę priorytetową, która wydrukuje nazwiska pracowników i ich identyfikatory w kolejności malejącej.mi., Nazwisko pracownika z najwyższym identyfikatorem pracownika zostanie wydrukowane jako pierwsze i tak dalej. Aby mieć taką implementację, możesz spojrzeć na następujący kod:

W tym kodzie najpierw zadeklarowaliśmy listę o nazwie „Pracownicy”. Po ogłoszeniu tej listy postaramy się wstawić dane niektórych pracowników, tj.mi., Identyfikator pracownika i nazwa pracownika do tej listy za pomocą wbudowanej funkcji „Dodatek” list w Python. Jednak podczas insercji przypisamy identyfikatory tym identyfikatorami w losowej kolejności.

Ilekroć chcemy wdrożyć kolejkę priorytetową przy użyciu listy w Python, musimy sortować listę w kolejności rosnącej lub zejściowej (w zależności od wymagań) po każdej wstawce w celu działania jako kolejka priorytetowa. W tym przykładzie, ponieważ chcieliśmy wydrukować pracowników w kolejności malejącej ich identyfikatorów, po każdej wstawce posortowaliśmy listę w kolejności malejącej. Nie nazwaliśmy metody „sort ()” po pierwszym wstawce, ponieważ w tym czasie mieliśmy tylko jeden element na naszej liście. Wreszcie, po włożeniu wszystkich elementów, użyliśmy pętli „while” na liście pracowników i wydrukowaliśmy pracowników za pomocą funkcji „Pop” Pythona. Następnie zapisaliśmy nasz kod i wykonaliśmy go w ramach Spyder IDE.

Wynik tego wdrożenia kolejki priorytetowej w Pythonie jest następujący. Możesz łatwo zobaczyć, że pracownicy są drukowani w kolejności malejącej.

Metoda nr 2: Korzystanie z modułu PriorityQueue w Pythonie:

Moduł priorytetowo-łyżki jest wbudowaną funkcją klasy „kolejki” w Python. W tym przykładzie chcemy wydrukować nazwiska pracowników w kolejności rosnącej ich identyfikatorów, i.mi., Pracownik z najniższym identyfikatorem pracownika zostanie wydrukowany najpierw i tak dalej, niezależnie od zamówienia ich wstawienia. Aby wdrożyć kolejkę priorytetową w ten sposób, będziesz musiał spojrzeć na kod Python pokazany poniżej:

W tym kodzie najpierw zaimportowaliśmy moduł priorytetowo -łyżki z klasy „kolejki” Python, aby łatwo wdrożyć naszą kolejkę priorytetową. Następnie mamy listę pracowników, którzy wyrównaliśmy funkcję „PriorityQueue” do łatwego działania na liście pracowników. Następnie wykorzystaliśmy wbudowaną funkcję „Put” Pythona do wstawienia niektórych danych pracowników do listy pracowników. Następnie mamy pętlę „while”, która itera za pośrednictwem listy pracowników i drukowania pracowników w kolejności rosnącej ich identyfikator.

Wynik tego wdrożenia kolejki priorytetowej w Pythonie jest następujący. Możesz łatwo zobaczyć, że pracownicy są drukowani w kolejności rosnącej.

Metoda nr 3: Korzystanie z modułu Heapq w Python:

Heapq to kolejny wbudowany moduł Pythona, którego można użyć do wdrożenia kolejki priorytetowych. Podobnie jak metoda nr 2, chcemy wydrukować pracowników w kolejności rosnącej ich identyfikatorów dla tego przykładu. Kod tego implementacji kolejki priorytetowej w Pythonie można zobaczyć na obrazie pokazanym poniżej:

W tym kodzie najpierw zaimportowaliśmy moduł „headq” Pythona, aby wygodnie korzystać z funkcji powiązanych z nim do wkładania i drukowania danych naszej kolejki priorytetowej. Następnie zadeklarowaliśmy listę pracowników. Następnie wprowadziliśmy niektóre rekordy w losowej kolejności, używając „heapq.Funkcja heuppush () ”modułu„ heapq ”na liście pracowników. Następnie mamy po prostu pętlę „podczas”, która ma iterować na liście pracowników i drukować pracowników w kolejności rosnącej ich identyfikator.Funkcja heappop () ”, ponieważ moduł„ heapq ”jest zaprogramowany do domyślnie drukowania list w kolejności rosnącej. Ten moduł można również zaprogramować do drukowania list w kolejności malejącej; Jednak wykracza to poza zakres tego przykładu.

Wynik tego wdrożenia kolejki priorytetowej w Pythonie jest następujący. Możesz łatwo zobaczyć, że pracownicy są drukowani w kolejności rosnącej.

Wniosek:

W tym artykule skupiamy się na kolejkach priorytetowych w Python. Wprowadziliśmy cię krótko do koncepcji kolejki priorytetowych w Python. Po zbudowaniu rozsądnego zrozumienia tej koncepcji podzieliliśmy trzy różne implementacje kolejnych priorytetowych w Python w systemie Windows 10. Po ładnym zrozumieniu wszystkich tych trzech implementacji możesz wybrać jedną z nich, aby wdrożyć kolejkę priorytetową w zależności od tego, czy chcesz postępować zgodnie.