Hva er en prioriteringskø?
Som navnet sier, en prioriteringskø er en kø som er programmert til å fungere i henhold til den angitte ordren. Hvis vi snakker om en enkel kø, fungerer den på "FIFO (First In First Out)" -rekkefølgen, jeg.e., Elementet som er satt inn i køen først vil også bli trukket ut først. Noen ganger vil vi imidlertid ikke at køen vår skal fungere på denne måten; snarere, vi vil kanskje at den skal følge en annen spesifisert ordre. Det er her de prioriterte køene spiller inn, noe som lar oss hente ut elementene i en kø i rekkefølgen etter vårt valg. Du vil kunne lære mer om bruken deres ved å gå gjennom de forskjellige implementeringene som er diskutert nedenfor:
Implementeringsmetoder for prioriteringskø i Python:
Vi kan bruke tre forskjellige metoder for å implementere prioriterte køene i Python, i.e., ved hjelp av en liste, PriorityQueue -modulen og Heapq -modulen. Vi vil diskutere alle disse tre metodene en etter en ved hjelp av relevante eksempler; Imidlertid vil de grunnleggende dataene vi vil bruke for alle disse eksemplene forbli de samme, slik at du enkelt kan sammenligne disse forskjellige implementeringsmetodene.
Merk: For implementering av alle disse eksemplene i Python, har vi brukt Spyder -verktøyet med Windows 10 -operativsystem.
Metode 1: Bruke en liste i Python:
I dette eksemplet ønsker vi å implementere en prioritert kø som vil skrive ut ansattes navn og deres ID -er i den synkende rekkefølgen av ID -ene deres, I.e., Ansattes navn med den høyeste ansattes ID vil bli skrevet ut først, og så videre. For å ha en slik implementering, kan du se på følgende kode:
I denne koden har vi først erklært en liste som heter “Ansatte”. Etter å ha erklært denne listen, vil vi prøve å sette inn dataene til noen ansatte, jeg.e., Ansattes ID og ansattes navn til denne listen ved hjelp av den innebygde "vedlegg" -funksjonen til lister i Python. Imidlertid vil vi tilordne ID -ene til disse ansatte i tilfeldig rekkefølge under innsettingen, slik at vi enkelt kan visualisere hvordan denne listen blir sortert i utdataene.
Hver gang vi ønsker å implementere en prioriteringskø ved hjelp av en liste i Python, må vi sortere listen i stigende eller synkende rekkefølge (avhengig av kravene) etter hver innsetting for å fungere som en prioriteringskø. I dette eksemplet, siden vi ønsket å trykke de ansatte i den synkende rekkefølgen på ID -ene deres, har vi sortert listen i synkende rekkefølge etter hver innsetting ved å bruke "Sort (Reverse = True)" -funksjonen til Python bortsett fra den første innsatsen. Vi kalte ikke metoden “Sort ()” etter den første innsatsen fordi vi bare hadde et enkelt element på listen vår på den tiden. Til slutt, etter å ha satt inn alle elementene, brukte vi en "while" -sløyfe på listen over ansatte og trykte de ansatte ved hjelp av Pythons "pop" -funksjon. Etter det har vi lagret koden vår og utført den i Spyder IDE.
Resultatet av denne implementeringen av prioriteringskøen i Python er som følger. Du kan enkelt se at de ansatte er skrevet ut i synkende rekkefølge av ID -ene deres.
Metode 2: Bruke PriorityQueue -modulen i Python:
PriorityQueue-modulen er en innebygd funksjon av "køen" -klassen i Python. I dette eksemplet ønsker vi å skrive ut ansattes navn i stigende rekkefølge av ID -ene deres, jeg.e., Den ansatte med den laveste ansattes ID vil bli skrevet ut først og så videre uavhengig av rekkefølgen på innsetting. For å få en prioriteringskø implementert på denne måten, må du se på Python -koden vist nedenfor:
I denne koden har vi først importert PriorityQueue -modulen fra Python "kø" -klassen for enkelt å implementere vår prioriteringskø. Deretter har vi en liste over ansatte som vi har utlignet "PriorityQueue" -funksjonen for å operere på listen over ansatte enkelt. Etter det har vi brukt den innebygde "Put" -funksjonen til Python for å sette inn noen ansattes data i de ansattes liste. Deretter har vi en "mens" -løkken som vil iterere gjennom de ansattes liste og skrive ut de ansatte i stigende rekkefølge av ID -ene sine mens de bruker "get" -funksjonen siden PriorityQueue -modulen er programmert for å skrive ut listene i stigende rekkefølge som standard.
Resultatet av denne implementeringen av prioriteringskøen i Python er som følger. Du kan enkelt se at de ansatte skrives ut i den stigende rekkefølgen på ID -ene deres.
Metode nr. 3: Bruke Heapq -modulen i Python:
Heapq er nok en innebygd modul av Python som kan brukes til å implementere prioriterte køer. Som metode nr. 2, ønsker vi å skrive ut de ansatte i stigende rekkefølge av ID -ene for dette eksemplet. Koden for denne implementeringen av prioriteringskøen i Python kan sees på bildet vist nedenfor:
I denne koden har vi først importert "Heapq" -modulen til Python for å bruke funksjonene som er tilknyttet den for å sette inn og skrive ut dataene til vår prioriteringskø enkelt for å sette inn den for å sette inn og skrive ut dataene fra vår prioriteringskø. Etter det har vi erklært en liste over ansatte. Deretter har vi satt inn noen poster i tilfeldig rekkefølge ved å bruke “Heapq.HeapPush () ”-funksjonen til“ Heapq ”-modulen inn i listen over ansatte. Deretter har vi ganske enkelt en "mens" -løkken som skal iterere på listen over ansatte og trykke de ansatte i stigende rekkefølge på ID -ene sine mens vi benytter oss av “Heapq.HeapPop () ”-funksjonen siden“ Heapq ”-modulen er programmert til å skrive ut listene i stigende rekkefølge som standard som standard. Denne modulen kan også programmeres for å skrive ut listene i synkende rekkefølge; Imidlertid er det utenfor omfanget av dette eksemplet.
Resultatet av denne implementeringen av prioriteringskøen i Python er som følger. Du kan enkelt se at de ansatte skrives ut i den stigende rekkefølgen på ID -ene deres.
Konklusjon:
I denne artikkelen var hovedfokuset vårt på prioriterte køer i Python. Vi introduserte deg kort for begrepet prioriterte køer i Python. Etter å ha bygget en god forståelse av dette konseptet, delte vi de tre forskjellige implementeringene av prioriterte køer i Python i Windows 10. Når du har forstått alle disse tre implementeringene pent, kan du velge en av disse for å implementere din prioriteringskø, avhengig av om du vil følge en stigende rekkefølge eller en synkende rekkefølge.