Tutorial sulla struttura dei dati della coda Python
Master operazioni coda FIFO in Python. Esegui ed esegui il nostro esempio di coda interattiva che mostra i metodi di accodamento e rimozione dalla coda.
Panoramica
Una coda è una struttura di dati lineare che funziona secondo il principio FIFO (First-In, First-Out). Gli elementi vengono aggiunti nella parte posteriore (accodamento) e rimossi dalla parte anteriore (decoda), proprio come una fila alla cassa in un negozio.
Le code sono fondamentali in informatica per elaborare le attività nell'ordine esatto in cui arrivano. Fungono da buffer che disaccoppiano i processi di produzione e consumo.
Python fornisce diversi modi per creare code: elenchi di base, il modulo `collections.deque` per operazioni veloci thread-safe e il modulo `queue.Queue` progettato specificamente per applicazioni multi-thread.
Codice e output di esecuzione
Una coda FIFO interattiva creata utilizzandocollections.deque per operazioni di rimozione anteriore efficienti.
from collections import deque
class Queue:
def __init__(self):
self.buffer = deque()
def enqueue(self, item):
self.buffer.append(item)
print(f"Enqueued: {item}")
def dequeue(self):
if self.is_empty():
return "Underflow: Queue is empty"
dequeued = self.buffer.popleft()
print(f"Dequeued: {dequeued}")
return dequeued
def is_empty(self):
return len(self.buffer) == 0
def size(self):
return len(self.buffer)
# Test the Queue
q = Queue()
q.enqueue("Customer 1")
q.enqueue("Customer 2")
q.enqueue("Customer 3")
print(f"Queue Size: {q.size()}")
q.dequeue()
q.dequeue()
print(f"Remaining in Queue: {list(q.buffer)}")Enqueued: Customer 1
Enqueued: Customer 2
Enqueued: Customer 3
Queue Size: 3
Dequeued: Customer 1
Dequeued: Customer 2
Remaining in Queue: ['Customer 3']Implementazione passo dopo passo
- Gestione delle richieste asincrone nei framework web del server
- Code di pianificazione dei lavori nei sistemi operativi
- Broker di messaggi e buffer di coda (come RabbitMQ o Redis)
Domande frequenti
Perché non utilizzare list.pop(0) per annullare la coda in Python?
L'uso di `list.pop(0)` è lento perché richiede lo spostamento di tutti gli elementi successivi nella memoria di un indice a sinistra, con conseguente prestazione O(n). Al contrario, `deque.popleft()` viene eseguito nel tempo costante O(1).
Cos'è una coda prioritaria?
Una coda con priorità è una variazione in cui gli elementi vengono serviti in base a una priorità associata anziché all'ordine di arrivo. Python lo implementa tramite il modulo `heapq`.
Argomenti correlati
Implementa uno stack LIFO in Python. Esegui il nostro esempio di codice stack interattivo per padroneggiare i limiti di push, pop, peek e capacità.
Implementazione di elenchi concatenati singolarmente in PythonScopri come implementare un elenco collegato singolarmente in Python. Esplora l'allocazione dinamica della memoria, le operazioni dei nodi, l'inserimento, l'attraversamento e l'eliminazione.