Coadă în Python

Coadă în Python

Ca o stivă, coada este o structură de date liniară care stochează articole într-un First In First Out ( FIFO ) manieră. Cu o coadă, articolul adăugat cel mai puțin recent este eliminat mai întâi. Un bun exemplu de coadă este orice coadă de consumatori pentru o resursă în care consumatorul care a venit primul este servit primul.

Coadă în Python

Operațiile asociate cu coada sunt:

  • coadă: Adaugă un articol la coadă. Dacă coada este plină, atunci se spune că este o condiție de depășire – Complexitatea timpului: O(1)
  • În consecinţă: Elimină un articol din coadă. Elementele sunt afișate în aceeași ordine în care sunt împinse. Dacă coada este goală, atunci se spune că este o condiție Underflow – Time Complexity: O(1)
  • Față: Obțineți elementul din față din coadă – Complexitatea timpului: O(1)
  • Spate: Obțineți ultimul articol din coadă – Complexitatea timpului: O(1)

Implementați o coadă în Python

Există diferite moduri de a implementa o coadă în Piton. Acest articol acoperă implementarea cozii folosind structuri de date și module din biblioteca Python. Python Queue poate fi implementat prin următoarele moduri:

Implementare folosind lista

Listă este o structură de date încorporată în Python, care poate fi folosită ca coadă. În loc de enqueue() și in consecinta () , adăuga() și pop() funcția este utilizată. Cu toate acestea, listele sunt destul de lente în acest scop, deoarece inserarea sau ștergerea unui element la început necesită deplasarea tuturor celorlalte elemente cu unul, necesitând timp O(n).
Codul simulează o coadă folosind o listă Python. Adaugă elemente 'A' , ‘b’ , și ‘c’ la coadă și apoi le scoate din coadă, rezultând o coadă goală la sfârșit. Ieșirea arată coada inițială, elementele scoase din coadă ( 'A' , ‘b’ , ‘c’ ) și starea goală a cozii.

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)>

Ieșire:

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 

Implementare folosind collections.deque

Coada în Python poate fi implementată folosind clasa deque din modulul de colecții. Deque este preferată față de listă în cazurile în care avem nevoie de operații mai rapide de adăugare și pop de la ambele capete ale containerului, deoarece deque oferă o complexitate de timp O(1) pentru operațiunile de adăugare și pop, în comparație cu lista care oferă complexitate de timp O(n). . În loc de enqueue și deque, sunt folosite funcțiile append() și popleft().
Codul folosește a deque> de la collections> modul pentru a reprezenta o coadă. Se anexează 'A' , ‘b’ , și ‘c’ la coadă și le scoate din coadă cu q.popleft()> , rezultând o coadă goală. Decomentează q.popleft()> după ce coada este goală ar ridica o IndexError> . Codul demonstrează operațiunile de coadă și gestionează un scenariu de coadă goală.

Python3




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)>

Ieșire:

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 

Implementare folosind queue.Queue

Queue este un modul încorporat din Python care este folosit pentru a implementa o coadă. queue.Queue(maxsize) inițializează o variabilă la o dimensiune maximă de maxsize. O dimensiune maximă de zero „0” înseamnă o coadă infinită. Această coadă urmează regula FIFO.
Există diverse funcții disponibile în acest modul:

  • dimensiune maximă – Numărul de articole permise în coadă.
  • gol() – Returnează True dacă coada este goală, False în caz contrar.
  • deplin() – Returnează True dacă există elemente de dimensiune maximă în coadă. Dacă coada a fost inițializată cu maxsize=0 (implicit), atunci full() nu returnează niciodată True.
  • obține() – Eliminați și returnați un articol din coadă. Dacă coada este goală, așteptați până când un articol este disponibil.
  • get_nowait() – Returnați un articol dacă unul este disponibil imediat, altfel ridicați QueueEmpty.
  • pune (articol) – Pune un articol în coadă. Dacă coada este plină, așteptați până când un spațiu liber este disponibil înainte de a adăuga articolul.
  • put_nowait(articol) – Pune un articol în coadă fără blocare. Dacă nu este disponibil imediat niciun slot gratuit, ridicați QueueFull.
  • qsize() – Returnează numărul de articole din coadă.

Exemplu: Acest cod utilizează Queue> clasa de la queue> modul. Începe cu o coadă goală și o umple cu „ A', ‘b’ , și ‘c’ . După scoaterea din coadă, coada devine goală și se adaugă „1”. În ciuda faptului că a fost gol mai devreme, acesta rămâne plin, deoarece dimensiunea maximă este setată la 3. Codul demonstrează operațiunile de coadă, inclusiv verificarea plinului și golului.

Python3




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())>

Ieșire:

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