Python Design Patterns - Filas
Fila é uma coleção de objetos que definem uma estrutura de dados simples seguindo os procedimentos FIFO (Fast In Fast Out) e LIFO (Last In First Out). As operações de inserção e exclusão são referidas comoenqueue e dequeue operações.
As filas não permitem acesso aleatório aos objetos que contêm.
Como implementar o procedimento FIFO?
O seguinte programa auxilia na implementação do FIFO -
import Queue
q = Queue.Queue()
#put items at the end of the queue
for x in range(4):
q.put("item-" + str(x))
#remove items from the head of the queue
while not q.empty():
print q.get()
Resultado
O programa acima gera a seguinte saída -
Como implementar o procedimento LIFO?
O programa a seguir ajuda na implementação do procedimento LIFO -
import Queue
q = Queue.LifoQueue()
#add items at the head of the queue
for x in range(4):
q.put("item-" + str(x))
#remove items from the head of the queue
while not q.empty():
print q.get()
Resultado
O programa acima gera a seguinte saída -
O que é uma fila prioritária?
Fila de prioridade é uma estrutura de dados de contêiner que gerencia um conjunto de registros com as chaves ordenadas para fornecer acesso rápido ao registro com a menor ou a maior chave na estrutura de dados especificada.
Como implementar uma fila prioritária?
A implementação da fila de prioridade é a seguinte -
import Queue
class Task(object):
def __init__(self, priority, name):
self.priority = priority
self.name = name
def __cmp__(self, other):
return cmp(self.priority, other.priority)
q = Queue.PriorityQueue()
q.put( Task(100, 'a not agent task') )
q.put( Task(5, 'a highly agent task') )
q.put( Task(10, 'an important task') )
while not q.empty():
cur_task = q.get()
print 'process task:', cur_task.name
Resultado
O programa acima gera a seguinte saída -