Coda Di Priorità Javascript

| | | | | | | | | | | | | | | | | | | | | | | | | | | |

Coda con priorità Python: una guida

Una coda con priorità Python memorizza i dati in un ordine particolare. Ci sono due modi per implementare una coda prioritaria in Python: usando la classe queue e usando il modulo heapq.

Potresti voler ordinare i dati in base ai valori di ogni elemento nell’elenco. Ad esempio, potresti volere che il valore più alto appaia per primo nell’elenco e che il valore più basso appaia per ultimo nell’elenco.

è qui che entrano in gioco le code di priorità. Una coda di priorità è una struttura di dati che memorizza i dati in base al valore delle sue chiavi in ‚Äã‚Äãordine crescente. Ciò ti consente di accedere facilmente al valore più piccolo e più grande nella coda.

Questo tutorial discuterà perché non dovresti usare un elenco per creare code prioritarie. Ti mostreremo due approcci più efficienti che puoi utilizzare per creare una coda di priorità Python.

Che cos’è una coda di priorità Python?

Le code di priorità sono una versione modificata di una coda che memorizza dati in ordine di quale elemento ha la priorità più alta. La priorità di ciascun elemento in una coda di priorità viene decisa in base al valore dell’elemento.

In informatica, le code sono strutture di dati che memorizzano gli elementi nell’ordine FIFO (first-in, first-out) . Esistono alcuni scenari in cui l’utilizzo di questa struttura può essere utile.

Ad esempio, supponi di creare un’app di monitoraggio degli ordini per un ristorante. La persona che effettua l’ordine per prima deve essere servita prima delle persone che effettuano l’ordine dopo. Per tenere traccia degli ordini, dovresti usare una coda.

Ci sono due modi per definire una coda prioritaria in Python:

  • Utilizzando il Classe di coda PriorityQueue
  • Utilizzo del modulo heapq

Puoi definire una coda di priorità utilizzando una struttura a lista, ma questa strategia è meno efficiente rispetto all’utilizzo della classe della coda PriorityQueue o del modulo heapq.

Piatto di coda prioritaria: queue.PriorityQueue

La classe queue.PriorityQueue crea una coda di priorità Python. Questa classe fa parte della libreria di code Python. Devi importare la libreria di code per usare questa classe. Per recuperare un elemento da un PriorityQueue, puoi usare il metodo get().

Per accedere alla classe PriorityQueue, dobbiamo importarlo nel nostro codice, cosa che possiamo fare usando questo Istruzione di importazione Python:

Supponiamo di voler creare una coda prioritaria per i possessori di biglietto presso un conce rt. Potremmo farlo usando questo codice:

Il nostro codice restituisce:

Nel nostro codice, prima importiamo la classe PriorityQueue dalla libreria queue, quindi inizializziamo una coda prioritaria chiamata ticket_holders. Successivamente, inseriamo tre tuple nella nostra coda prioritaria, che memorizzano i numeri e i nomi dei biglietti associati a un biglietto.

Utilizziamo un ciclo while Python per esaminare ogni elemento nella coda di priorità ticket_holders. Quindi, recuperiamo quell’elemento usando get().

Il metodo queue.PriorityQueue è efficiente e facile da usare, il che lo rende un’ottima scelta per quando è necessario creare una coda prioritaria.

Modulo heapq Python della coda prioritaria

Il modulo heapq consente di definire una coda prioritaria Python. Una struttura dati heapq rimuove gli elementi in ordine di priorità. Il valore più basso ha la priorità più bassa e il valore più alto ha la priorità più alta nella struttura heapq.

Prima di poter utilizzare il modulo heapq, dobbiamo prima importarlo nel nostro codice utilizzando la seguente istruzione import:

Torniamo al nostro esempio precedente. Supponiamo di voler creare una coda prioritaria per memorizzare le informazioni sui possessori di biglietti a un concerto. Potremmo fare quindi usando il modulo heapq e questo programma:

Il nostro codice restituisce:

Per prima cosa abbiamo importato la libreria heapq, quindi abbiamo inizializzato una variabile Python chiamata ticket_holders . Abbiamo usato il metodo heappush() per inserire tre tuple nella nostra coda di priorità. Questa coda memorizza i numeri del biglietto per ogni titolare del biglietto e il nome di ogni titolare del biglietto.

Abbiamo quindi creato un ciclo while che scorre ogni elemento nella nostra coda prioritaria. Questo ciclo rimuove l’elemento in cima alla coda usando heappop(). Quindi, l’elemento rimosso viene stampato sulla console. Come puoi vedere, tutti gli elementi nella nostra coda vengono stampati in ordine di priorità.

Perché non dovresti tenere un elenco

Tecnicamente, puoi creare una coda prioritaria utilizzando la struttura dati dell’elenco Python. Per fare ciò, dovresti creare un elenco, quindi ordinarlo in ordine crescente.

Tuttavia, questo è un modo relativamente inefficiente per mantenere una coda di priorità. Quando modifichi gli elementi nell’elenco, dovresti riordinare l’elenco, il che richiede tempo.

Puoi utilizzare un elenco tradizionale come coda prioritaria se hai solo bisogno di memorizzare alcuni valori. Ma se stai cercando di creare una coda più grande, gli elenchi non sono una buona opzione.

Per riferimento, esaminiamo un esempio di coda prioritaria utilizzando gli elenchi. Supponiamo di voler creare una coda prioritaria che memorizzi l’ordine dei possessori di biglietto che dovrebbero essere ammessi per primi a un concerto. Potremmo usa il seguente codice per creare questa coda:

Il nostro codice restituisce:

Abbiamo creato un elenco chiamato ticket_holders, quindi abbiamo aggiunto tre tuple all’elenco. Ogni tupla conteneva il numero di biglietto di un titolare del biglietto e il loro nome. Quindi, abbiamo usato la funzione Python sort() per ordinare la nostra lista di possessori di biglietti in ordine inverso.

Abbiamo creato un ciclo while che scorre ogni elemento nel ticket_holders list e l’elemento in cima alla lista. Quindi, il nostro codice stampa l’elemento rimosso sulla console.

Conclusione

I due più comuni per creare una coda prioritaria sono utilizzare il modulo heapq o la coda. Classe PriorityQueue. Sebbene tecnicamente sia possibile utilizzare un elenco come coda prioritaria, questo approccio non si adatta bene.

Questo tutorial ha discusso, con riferimento agli esempi, su come creare una coda prioritaria in Python. Ora sei dotato delle conoscenze necessarie per iniziare a creare le tue code prioritarie come un professionista Python!

Per ulteriori indicazioni su come imparare Python, dai un’occhiata al nostro Guida all’apprendimento di Python.