Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Filas em Python: Entendendo FIFO e LIFO com Exemplos Práticos

Filas em Python: Entendendo FIFO e LIFO com Exemplos Práticos

O que é uma Fila em Python?

Uma fila é uma estrutura de dados que armazena itens em ordem linear. Itens são adicionados no final e removidos do início, seguindo o princípio First-In, First-Out (FIFO - Primeiro a Entrar, Primeiro a Sair). A fila expõe duas extremidades lógicas: frente e fundo — enqueue no fundo, dequeue na frente.

Neste tutorial você aprenderá:

Como o Módulo Queue Funciona?

O comportamento é análogo a uma fila física: a primeira pessoa na fila é a primeira atendida. Na estrutura de dados fila, o elemento enfileirado primeiro será desenfileirado primeiro.

Filas em Python: Entendendo FIFO e LIFO com Exemplos Práticos

O ponto fundo é onde novos itens são inseridos (ex.: valor 7). O ponto frente é onde itens saem da fila; remover o primeiro item resulta no valor 1.

Como a fila é linear, você não pode remover um elemento arbitrário no meio; deve desenfileirar todos os elementos precedentes primeiro.

Filas em Python: Entendendo FIFO e LIFO com Exemplos Práticos

Tipos de Filas no Python

O módulo queue do Python oferece duas classes principais de fila:

Começando: Importando o Módulo

O Python inclui o módulo queue por padrão; nenhuma instalação externa é necessária.

import queue

Instancie uma fila FIFO:

fila = queue.Queue()

Instancie uma fila LIFO:

fila = queue.LifoQueue()

Métodos Principais

Tanto Queue quanto LifoQueue expõem a mesma API principal:

Exemplo de Fila FIFO

Enfileirar um Item Único

import queue
fila = queue.Queue()
fila.put(10)  # adiciona 10 à fila

Enfileirar Múltiplos Itens com Limite de Tamanho

fila = queue.Queue(maxsize=5)  # máximo 5 itens
for i in range(1, 6):
    fila.put(i)
print(fila.full())  # → True

Saída: True

Desenfileirar um Item

item = fila.get()
print('Item desenfileirado:', item)

Saída: Item desenfileirado: 10

Exemplo de Fila LIFO

Enfileirar um Item Único

fila = queue.LifoQueue()
fila.put(10)

Desenfileirar um Item

item = fila.get()
print('Desenfileirado da LIFO:', item)

Saída: Desenfileirado da LIFO: 10

Operações em Lote

FIFO – Enfileirar 20 Números

fila = queue.Queue()
for i in range(20):
    fila.put(i)

FIFO – Desenfileirar Todos

while not fila.empty():
    print('Valor:', fila.get())

Saída: Value: 0 ... Value: 19

LIFO – Enfileirar 20 Números

fila = queue.LifoQueue()
for i in range(20):
    fila.put(i)

LIFO – Desenfileirar Todos

while not fila.empty():
    print('Valor:', fila.get())

Saída: Value: 19 ... Value: 0

Ordenando uma Fila (Bubble Sort)

fila = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
    fila.put(item)

n = fila.qsize()
for i in range(n):
    x = fila.get()
    for j in range(n-1):
        y = fila.get()
        if x > y:
            fila.put(y)
        else:
            fila.put(x)
        x = y
    fila.put(x)

while not fila.empty():
    print(fila.queue[0], end=' ')
    fila.get()

Saída: 3 4 5 10 11 21

Invertendo uma Fila Usando Recursão

def inverter_fila(origem, destino):
    item = origem.get()
    if not origem.empty():
        inverter_fila(origem, destino)
    destino.put(item)
    return destino

fila1 = queue.Queue()
for item in [11, 5, 4, 21, 3, 10]:
    fila1.put(item)

fila2 = queue.Queue()
inverter_fila(fila1, fila2)
while not fila2.empty():
    print(fila2.queue[0], end=' ')
    fila2.get()

Saída: 10 3 21 4 5 11

Resumo Rápido

python

  1. Dominando Operadores em Python: Guia Completo
  2. Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
  3. Dominando o Método strip() do Python: Guia Completo e Exemplos Práticos
  4. Python len(): Guia Prático para Medir Comprimento de Objetos
  5. Dominando o yield do Python: Generator vs Return – Guia Prático
  6. Counter do Python em collections: Contagem Eficiente, Atualização e Operações Aritméticas
  7. Dominando enumerate() do Python: Loop com Índices para Listas, Tuplas, Strings e Dicionários
  8. Python time.sleep(): Como Adicionar Atrasos no Seu Código (Exemplo)
  9. Python List index(): Como Encontrar Posições de Elementos com Exemplos Práticos
  10. FIFO vs LIFO: Diferenças Principais, Vantagens, Desvantagens e Aplicações Práticas