Fila Python:Exemplo FIFO, LIFO
O que é fila Python?
Uma fila é um contêiner que contém dados. Os dados que são inseridos primeiro serão removidos primeiro e, portanto, uma fila também é chamada de “First in First Out” (FIFO). A fila tem duas extremidades na frente e atrás. Os itens são inseridos pela parte traseira e removidos pela parte frontal.
Neste tutorial Python, você aprenderá:
- O que é a fila Python?
- Como funciona a fila do Python?
- Tipos de fila em Python
- Instalação da fila Python
- Métodos disponíveis dentro das classes Queue e LifoQueue
- Exemplo de fila de primeiro a entrar, primeiro a sair
- Exemplo de fila Last In First Out
- Adicione mais de 1 item em uma fila
- Fila de classificação
- Reversão de fila
Como funciona a fila do Python?
A fila pode ser facilmente comparada com o exemplo do mundo real, a fila de pessoas esperando em uma fila no balcão de ingressos, a pessoa que estiver primeiro receberá o ingresso primeiro, seguida pela próxima pessoa e assim por diante. A mesma lógica também vale para a estrutura de dados da fila.
Aqui está uma representação diagramática da fila:
A traseira representa o ponto onde os itens são inseridos dentro da fila. Neste exemplo, 7 é o valor para isso.
A Frente representa o ponto onde os itens da fila serão removidos. Se você remover um item da fila, o primeiro elemento que você obterá será 1, conforme mostrado na figura.
O item 1 foi o primeiro a ser inserido na fila, e ao removê-lo é o primeiro a sair. Portanto, a fila é chamada FIRST IN FIRST OUT (FIFO)
Em uma fila, os itens são removidos em ordem e não podem ser removidos do meio. Você só não pode remover o item 5 aleatoriamente da fila, para isso você terá que remover todos os itens antes do 5. Os itens da fila serão removidos na ordem em que forem inseridos.
Tipos de fila em Python
Existem basicamente dois tipos de fila em Python:
- First in First out Queue:Para isso, o elemento que sair primeiro será o primeiro a sair.
Para trabalhar com FIFO, você deve chamar Queue() classe do módulo de fila.
- Last in First out Queue:Aqui, o último elemento inserido será o primeiro a sair.
Para trabalhar com LIFO, você deve chamar LifoQueue() classe do módulo de fila.
Instalação da fila Python
É muito fácil trabalhar com fila em python. Aqui estão as etapas a seguir para fazer uso da fila em seu código.
Etapa 1) Você só precisa importar o módulo queue, conforme mostrado abaixo:
import queue
O módulo está disponível por padrão com python e você não precisa de nenhuma instalação adicional para começar a trabalhar com a fila. Existem 2 tipos de fila FIFO (first in first out) e LIFO (last in first out).
Etapa 2) Para trabalhar com fila FIFO , chame a classe Queue usando o módulo queue importado conforme mostrado abaixo:
import queue q1 = queue.Queue()
Etapa 3) Para trabalhar com a fila LIFO chame a classe LifoQueue() conforme mostrado abaixo:
import queue q1 = queue.LifoQueue()
Métodos disponíveis dentro das classes Queue e LifoQueue
A seguir estão os métodos importantes disponíveis dentro das classes Queue e LifoQueue:
- coloque(item): Isso colocará o item dentro da fila.
- get(): Isso retornará um item da fila.
- vazio(): Ele retornará true se a fila estiver vazia e false se houver itens presentes.
- qsize(): retorna o tamanho da fila.
- completo(): retorna true se a fila estiver cheia, caso contrário, false.
Exemplo de fila de primeiro a entrar, primeiro a sair
No caso de first in first out, o elemento que sair primeiro será o primeiro a sair.
Adicionar um item em uma fila
Vamos trabalhar em um exemplo para adicionar um item em uma fila. Para começar a trabalhar com a fila, primeiro importe a fila do módulo, conforme mostrado no exemplo abaixo.
Para adicionar um item , você pode usar o método put() conforme mostrado no exemplo:
import queue q1 = queue.Queue() q1.put(10) #this will additem 10 to the queue.
Por padrão, o tamanho da fila é infinito e você pode adicionar qualquer número de itens a ela. Caso queira definir o tamanho da fila o mesmo pode ser feito da seguinte forma
import queue q1 = queue.Queue(5) #The max size is 5. q1.put(1) q1.put(2) q1.put(3) q1.put(4) q1.put(5) print(q1.full()) # will return true.
Resultado:
True
Agora o tamanho da fila é 5, e não levará mais de 5 itens, e o método q1.full() retornará true. Adicionar mais itens não executará mais o código.
Remover um item da fila
Para remover um item da fila, você pode usar o método chamado get(). Este método permite itens da fila quando chamados.
O exemplo a seguir mostra como remover um item da fila.
import queue q1 = queue.Queue() q1.put(10) item1 = q1.get() print('The item removed from the queue is ', item1)
Resultado:
The item removed from the queue is 10
Exemplo de fila Last In First Out
No caso de último na primeira fila de saída, o elemento que entrar por último será o primeiro a sair.
Para trabalhar com LIFO, ou seja, último na primeira fila de saída, precisamos importar o módulo queue e fazer uso do método LifoQueue().
Adicionar um item em uma fila
Aqui vamos entender como adicionar um item à fila LIFO.
import queue q1 = queue.LifoQueue() q1.put(10)
Você tem que usar o método put() no LifoQueue, como mostrado no exemplo acima.
Remover um item da fila
Para remover um item do LIFOqueue você pode usar o método get() .
import queue q1 = queue.LifoQueue() q1.put(10) item1 = q1.get() print('The item removed from the LIFO queue is ', item1)
Saída:
The item removed from the LIFO queue is 10
Adicione mais de 1 item em uma fila
Nos exemplos acima, vimos como adicionar um único item e remover o item para FIFO e LIFOqueue. Agora veremos como adicionar mais de um item e também removê-lo.
Adicionar um item em uma fila FIFO
import queue q1 = queue.Queue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue
Remover um item da fila FIFO
import queue q1 = queue.Queue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue while not q1.empty(): print("The value is ", q1.get()) # get() will remove the item from the queue.
Resultado:
The value is 0 The value is 1 The value is 2 The value is 3 The value is 4 The value is 5 The value is 6 The value is 7 The value is 8 The value is 9 The value is 10 The value is 11 The value is 12 The value is 13 The value is 14 The value is 15 The value is 16 The value is 17 The value is 18 The value is 19
Adicionar um item em uma fila LIFO
import queue q1 = queue.LifoQueue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue
Remover um item da fila LIFO
import queue q1 = queue.LifoQueue() for i in range(20): q1.put(i) # this will additem from 0 to 20 to the queue while not q1.empty(): print("The value is ", q1.get()) # get() will remove the item from the queue.
Resultado:
The value is 19 The value is 18 The value is 17 The value is 16 The value is 15 The value is 14 The value is 13 The value is 12 The value is 11 The value is 10 The value is 9 The value is 8 The value is 7 The value is 6 The value is 5 The value is 4 The value is 3 The value is 2 The value is 1 The value is 0
Fila de classificação
O exemplo a seguir mostra a classificação da fila. O algoritmo usado para classificação é a classificação por bolha.
import queue q1 = queue.Queue() #Addingitems to the queue q1.put(11) q1.put(5) q1.put(4) q1.put(21) q1.put(3) q1.put(10) #using bubble sort on the queue n = q1.qsize() for i in range(n): x = q1.get() # the element is removed for j in range(n-1): y = q1.get() # the element is removed if x > y : q1.put(y) #the smaller one is put at the start of the queue else: q1.put(x) # the smaller one is put at the start of the queue x = y # the greater one is replaced with x and compared again with nextelement q1.put(x) while (q1.empty() == False): print(q1.queue[0], end = " ") q1.get()
Resultado:
3 4 5 10 11 21
Reversão de fila
Para reverter a fila, você pode usar outra fila e recursão.
O exemplo a seguir mostra como reverter a fila.
Exemplo:
import queue q1 = queue.Queue() q1.put(11) q1.put(5) q1.put(4) q1.put(21) q1.put(3) q1.put(10) def reverseQueue (q1src, q2dest) : buffer = q1src.get() if (q1src.empty() == False) : reverseQueue(q1src, q2dest) #using recursion q2dest.put(buffer) return q2dest q2dest = queue.Queue() qReversed = reverseQueue(q1,q2dest) while (qReversed.empty() == False): print(qReversed.queue[0], end = " ") qReversed.get()
Resultado:
10 3 21 4 5 11
Resumo:
- Uma fila é um contêiner que contém dados. Existem dois tipos de fila, FIFO e LIFO.
- Para um FIFO (First in First out Queue), o elemento que for primeiro será o primeiro a sair.
- Para um LIFO (Last in First Out Queue), o elemento inserido por último será o primeiro a sair.
- Um item em uma fila é adicionado usando o método put(item).
- Para remover um item, o método get() é usado.
python
- Operadores Python
- Dicionário Python
- Função Python String strip () com EXEMPLO
- Comprimento da string do Python | Exemplo do método len()
- Yield in Python Tutorial:Generator &Yield vs Return Example
- Contador Python em coleções com exemplo
- Função Enumerate() em Python:Loop, Tuple, String (Exemplo)
- Python time.sleep():adicionar atraso ao seu código (exemplo)
- Python List index() com exemplo
- FIFO vs LIFO:diferenças, vantagens e desvantagens, aplicações e muito mais