fila de prioridade python

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

Fila de prioridade do Python: um guia

A armazena os dados da fila de prioridade do Python em uma ordem específica. Existem duas maneiras de implementar uma fila de prioridade em Python:. Usando a classe queue e usando o módulo heapq

Você pode querer classificar os dados com base nos valores ‚Äã‚Äão de cada item na lista. Por exemplo, você pode querer que o valor mais alto apareça na lista primeiro e o valor mais baixo apareça na última lista.

é a fila de espera prioritária que entra. Uma fila de espera prioritária é um dado estrutura que armazena dados com base no valor de sua chave em ordem crescente. Isso lhe dá acesso fácil ao menor e ao maior valor na fila.

Este tutorial explicará por que você não deve usar uma lista para criar filas de espera prioritária. Mostraremos duas abordagens mais eficientes que você pode usar para criar uma fila de prioridade do Python.

O que é uma fila de prioridade do Python?

As filas de prioridade são uma versão modificada de um fila que armazena dados em ordem para qual item tem a prioridade mais alta. A prioridade de cada item em uma fila de prioridade é decidida com base no valor do item.

No cálculo, as filas são estruturas de dados que os elementos da memória em ordem FIFO (first in, first). -Fora). Existem alguns cenários em que o uso desse recurso pode ser útil.

Por exemplo, suponha que você esteja criando um aplicativo de rastreamento de pedidos para um restaurante. A pessoa que faz o pedido deve primeiro ser atendida na frente das pessoas, fazendo o pedido mais tarde. . Para acompanhar os comandos, você precisa usar uma fila

Existem duas maneiras de definir a fila de prioridade em Python:

  • Usando a classe PriorityQueue Queue
  • Usando o módulo heapq

Você pode definir uma fila de prioridade usando uma estrutura de lista, mas essa estratégia é menos eficiente do que usar a classe de fila ou o módulo PriorityQueue heapq

Priority queue plate:. Queue.PriorityQueue

queue.PriorityQueue cria uma fila de prioridade do Python. Essa classe faz parte da biblioteca de código do Python. Você deve importar o queue para usar esta classe. Para recuperar um item de um PriorityQueue, você pode usar o método get().

Para acessar a classe PriorityQueue, precisamos importá-lo para nosso código, o que podemos fazer usando esta instrução de importação Python :

Suponha que queremos criar uma fila d ` prioridade à espera de portadores de bilhete num con rt. Podemos fazer isso usando este código:

Nosso código retorna:

Em nosso código, temos Para primeiro importar a classe PriorityQueue da biblioteca file, inicializamos um fila de prioridade chamada ticket_holders. Em seguida, colocamos três tuplas em nossa fila de prioridade, os números do ticket da loja e os nomes associados a um ticket.

Usamos um loop Python para examinar cada item na fila de prioridade ticket_holders . Então nós pegamos este elemento usando get().

o método fila.PriorityQueue é eficaz e fácil de usar, tornando-o uma excelente escolha quando você precisa para criar uma fila de espera prioritária.

Módulo de fila de prioridade heapq do Python

O módulo heapq permite definir uma fila de prioridade do Python. Uma estrutura de dados heapq remove itens em ordem de prioridade. O valor mais baixo tem a prioridade mais baixa e o valor mais alto tem a prioridade mais alta na estrutura heapq

Antes pode usar o módulo heapq, devemos primeiro importá-lo em nosso código usando a seguinte instrução de importação:

Qualquer um dos dois vá para o nosso exemplo anterior. Suponha que queremos criar uma fila prioritária para armazenar informações sobre os portadores de ingressos em um show. Podemos fazer isso usando o módulo heapq e este programa:

Nosso código retorna:

Primeiro, importamos a biblioteca heapq, depois inicializamos uma Variável Python chamada ticket_holders. Usamos o método heappush() para colocar três tuplas em nossa fila de prioridade. Essa fila armazena os números dos ingressos para cada titular do ingresso e o nome de cada titular do ingresso.

Criamos então um loop enquanto passamos por cada item em nossa fila prioritária. Este loop remove o elemento do topo da fila de espera usando heappop(). Em seguida, o item excluído é impresso no console. Como você pode ver, todos os itens em nossa fila são impressos em ordem de prioridade.

Por que você não deve manter uma lista

Tecnicamente, você pode criar uma fila de prioridade usando o < uma estrutura de dados href="/python-network/">lista python . Para fazer isso, você teria que criar uma lista e classificá-las em ordem crescente.

No entanto, essa é uma maneira relativamente ineficiente de manter uma fila de prioridade. Ao editar os itens na lista, você precisa reorganizar a lista, o que leva tempo.

Você pode usar uma lista tradicional como uma fila de prioridade se precisar armazenar apenas alguns valores. Mas se você deseja criar uma fila maior, as listas não são uma boa opção

Para referência, vejamos um exemplo de uma fila de prioridade usando listas. Suponha que queremos criar uma fila de prioridade que armazene a ordem dos portadores de ingressos que devem ser admitidos em um primeiro show. Poderíamos usar o seguinte código para criar esta fila:

Nosso código retorna:

criamos uma lista chamada ticket_holders, adicionamos três tuplas à lista. Cada tupla continha um número de bilhete do titular do bilhete e seu nome. Em seguida, usamos a função sort() do Python para classificar a lista de titulares de tíquetes em ordem inversa.

Criamos um longo loop de tempo que passa por cada item no lista de titulares de ingressos e o item no topo da lista. Em seguida, nosso código imprime o item excluído no console.

Conclusão

Os dois mais comuns para criar prioridade de fila são usar o módulo heapq ou queue . Classe PriorityQueue. Embora seja tecnicamente possível usar uma lista como uma fila de prioridade, essa abordagem não funciona bem.

Este tutorial discutiu, referindo-se a exemplos, como criar uma fila de prioridade em Python.Agora você está equipado com o conhecimento para começar a criar suas filas de prioridade como um profissional de Python!

Para obter mais dicas sobre como aprender Python, consulte nosso Guia de aprendizado de Python < /a>.