Coletânea Python do ZERO às Redes Neurais Artificiais
Gerenciamento de filas via Deque
Uma vez entendida a lógica de gerenciamento de filas a partir do exemplo anterior, hora de conhecer um método alternativo baseado em uma biblioteca nativa do Python chamada Deque.
Raciocine que em programação você dificilmente irá reinventar a roda, mas existe uma série de possibilidades de melhorar a mesma.
Conferindo repositórios de bibliotecas é possível ver que existem centenas de milhares de bibliotecas, módulos e pacotes criados pela comunidade a fim de otimizar ou implementar funcionalidades no Python.
Como sempre, todo processo se inicia pela importação das bibliotecas, módulos e pacotes que serão utilizados ao longo de nosso código. Nesse caso, da biblioteca typing importamos Deque e Any. Da mesma forma da biblioteca collections importamos deque.
Em seguida criamos uma variável de nome fila2 que por sua vez instancia Deque com um objeto qualquer em sua posição inicial e recebe como atributo a função deque( ), sem parâmetros mesmo.
Na sequência já podemos, como de costume, manipular dados da mesma forma que costumamos fazer em listas básicas, por meio da função append( ) podemos adicionar elementos a nossa fila.
Por meio do laço for podemos fazer a varredura dessa lista e verificar quantos e quais elementos compõem essa fila.
Como esperado, os elementos foram adicionados sequencialmente conforme ordem de adição.
Para removermos elementos de nossa fila, via deque( ) usamos da função popleft( ) uma vez que queremos remover o primeiro elemento da fila, sendo o segundo assumindo a posição de primeiro, o terceiro a do segundo, respectivamente independente da quantidade de elementos na fila.
Da mesma forma, como no bloco anterior, via laço for podemos percorrer a fila após a atualização da mesma.
E como esperado, a nova leitura da fila nos mostra que Carlos agora ocupa a primeira posição da fila e os demais nas suas respectivas posições.
Apenas uma observação, para concluirmos nossa linha de raciocínio, filas geradas via Deque possuem índice, você pode usar de qualquer função ao qual está habituado a usar em uma lista comum, porém você deve tomar o cuidado de não tentar remover, por exemplo, o elemento 0 via índice, nesse caso irá gerar um erro de interpretação, haja visto que essa biblioteca não possui internamente todos validadores que criamos no exemplo anterior manualmente.