logo

Wachtrij in Python

Net als een stapel is de wachtrij een lineaire gegevensstructuur waarin items worden opgeslagen in een First In First Out ( FIFO ) manier. Bij een wachtrij wordt het minst recent toegevoegde item als eerste verwijderd. Een goed voorbeeld van een wachtrij is elke wachtrij van consumenten voor een hulpbron waarbij de consument die het eerst kwam, als eerste wordt bediend.

Wachtrij in Python

Bewerkingen die aan de wachtrij zijn gekoppeld, zijn:



  • In wachtrij: Voegt een item toe aan de wachtrij. Als de wachtrij vol is, wordt er gesproken van een overloopconditie – Tijdcomplexiteit: O(1)
  • Overeenkomstig: Verwijdert een item uit de wachtrij. De items worden in dezelfde volgorde geplaatst als waarin ze zijn geduwd. Als de wachtrij leeg is, wordt er gesproken van een Underflow-conditie – Tijdcomplexiteit: O(1)
  • Voorkant: Haal het voorste item uit de wachtrij – Tijdcomplexiteit: O(1)
  • Achterkant: Haal het laatste item uit de wachtrij – Tijdcomplexiteit: O(1)

Implementeer een wachtrij in Python

Er zijn verschillende manieren om een ​​wachtrij te implementeren Python. Dit artikel behandelt de implementatie van een wachtrij met behulp van datastructuren en modules uit de Python-bibliotheek. Python Queue kan op de volgende manieren worden geïmplementeerd:

exemplaar van in Java

Implementatie met behulp van lijst

Lijst is de ingebouwde datastructuur van Python die als wachtrij kan worden gebruikt. In plaats van enqueue() en overeenkomstig () , toevoegen() En knal() functie wordt gebruikt. Lijsten zijn echter nogal traag voor dit doel, omdat het invoegen of verwijderen van een element aan het begin vereist dat alle andere elementen met één worden verschoven, wat O(n) tijd kost.
De code simuleert een wachtrij met behulp van een Python-lijst. Het voegt elementen toe 'A' , 'B' , En 'C' naar de wachtrij en haalt ze vervolgens uit de wachtrij, wat aan het einde resulteert in een lege wachtrij. De uitvoer toont de initiële wachtrij, elementen uit de wachtrij ( 'A' , 'B' , 'C' ), en de lege status van de wachtrij.

Python3




queue>=> []> queue.append(>'a'>)> queue.append(>'b'>)> queue.append(>'c'>)> print>(>'Initial queue'>)> print>(queue)> print>(>' Elements dequeued from queue'>)> print>(queue.pop(>0>))> print>(queue.pop(>0>))> print>(queue.pop(>0>))> print>(>' Queue after removing elements'>)> print>(queue)>

>

base64 javascript-decodering

>

Uitgang:

Initial queue ['a', 'b', 'c'] Elements dequeued from queue a b c Queue after removing elements []>
Traceback (most recent call last):  File '/home/ef51acf025182ccd69d906e58f17b6de.py', line 25, in   print(queue.pop(0)) IndexError: pop from empty list>

Implementatie met behulp van collections.deque

Wachtrij in Python kan worden geïmplementeerd met behulp van deque-klasse uit de collectiemodule. Deque heeft de voorkeur boven list in de gevallen waarin we snellere append- en pop-bewerkingen nodig hebben vanaf beide uiteinden van de container, omdat deque een O(1) tijdscomplexiteit biedt voor append- en pop-bewerkingen in vergelijking met list die O(n) tijdscomplexiteit biedt . In plaats van enqueue en deque worden de functies append() en popleft() gebruikt.
De code maakt gebruik van eendeque>van decollections>module om een ​​wachtrij weer te geven. Het voegt toe 'A' , 'B' , En 'C' naar de wachtrij en haalt ze uit de wachtrij q.popleft()> , wat resulteert in een lege wachtrij. Geen commentaar geven q.popleft()> nadat de wachtrij leeg is, zou eenIndexError>. De code demonstreert wachtrijbewerkingen en verwerkt een leeg wachtrijscenario.

Python3


jQuery-ouder



from> collections>import> deque> q>=> deque()> q.append(>'a'>)> q.append(>'b'>)> q.append(>'c'>)> print>(>'Initial queue'>)> print>(q)> print>(>' Elements dequeued from the queue'>)> print>(q.popleft())> print>(q.popleft())> print>(q.popleft())> print>(>' Queue after removing elements'>)> print>(q)>

>

>

Uitgang:

Initial queue deque(['a', 'b', 'c']) Elements dequeued from the queue a b c Queue after removing elements deque([])>
Traceback (most recent call last):  File '/home/b2fa8ce438c2a9f82d6c3e5da587490f.py', line 23, in   q.popleft() IndexError: pop from an empty deque>

Implementatie met behulp van wachtrij.Queue

Wachtrij is een ingebouwde module van Python die wordt gebruikt om een ​​wachtrij te implementeren. wachtrij.Queue(maxsize) initialiseert een variabele tot een maximale grootte van maxsize. Een maximale grootte van nul ‘0’ betekent een oneindige wachtrij. Deze wachtrij volgt de FIFO-regel.
Er zijn verschillende functies beschikbaar in deze module:

  • maximale grootte – Aantal toegestane items in de wachtrij.
  • leeg() – Retourneert True als de wachtrij leeg is, anders False.
  • vol() – Retourneert True als er maxsize-items in de wachtrij staan. Als de wachtrij is geïnitialiseerd met maxsize=0 (de standaardwaarde), retourneert full() nooit True.
  • krijgen() – Een item uit de wachtrij verwijderen en terugsturen. Als de wachtrij leeg is, wacht dan tot er een item beschikbaar is.
  • get_nowait() – Retourneer een item als het onmiddellijk beschikbaar is, of verhoog QueueEmpty.
  • plaats(item) – Plaats een item in de wachtrij. Als de wachtrij vol is, wacht dan tot er een vrije plek beschikbaar is voordat u het item toevoegt.
  • put_nowait(item) – Plaats een item in de wachtrij zonder te blokkeren. Als er niet onmiddellijk een vrij slot beschikbaar is, verhoogt u QueueFull.
  • qgrootte() – Retourneer het aantal items in de wachtrij.

Voorbeeld: Deze code maakt gebruik van deQueue>klasse uit dequeue>module. Het begint met een lege wachtrij en vult deze met ‘ A', 'B' , En 'C' . Na het uit de wachtrij halen wordt de wachtrij leeg en wordt ‘1’ toegevoegd. Ondanks dat het eerder leeg was, blijft het vol, omdat de maximale grootte is ingesteld op 3. De code demonstreert wachtrijbewerkingen, inclusief het controleren op volheid en leegheid.

Python3


csv-bestand lezen in Java



wat betekent xdxd

from> queue>import> Queue> q>=> Queue(maxsize>=> 3>)> print>(q.qsize())> q.put(>'a'>)> q.put(>'b'>)> q.put(>'c'>)> print>(>' Full: '>, q.full())> print>(>' Elements dequeued from the queue'>)> print>(q.get())> print>(q.get())> print>(q.get())> print>(>' Empty: '>, q.empty())> q.put(>1>)> print>(>' Empty: '>, q.empty())> print>(>'Full: '>, q.full())>

>

>

Uitgang:

0 Full: True Elements dequeued from the queue a b c Empty: True Empty: False Full: False>