Introdução ao uso de Python deque

Introdução ao uso de Python deque

deque é uma classe nas coleções de bibliotecas padrão do Python, que implementa uma fila que pode ser operada em ambas as extremidades, que é equivalente a uma fila de extremidade dupla, que é muito semelhante à lista de tipos de dados básicos do Python.

Implementação Python de referência de fila dupla: https://blog.csdn.net/weixin_43790276/article/details/104033394

Ao usar Python para implementar um deque, uma lista é usada. Você pode usar um deque para comparar com deque. Existem muitos métodos implementados na classe deque. A seguir, apresentaremos o uso da classe deque.

1. Deque entrar e sair da equipe

A classe deque implementa um único enfileiramento de dados, um enfileiramento de objeto iterável e os dados são inseridos na posição especificada.

1. Enfileiramento de dados único

# coding=utf-8
import collections


queue = collections.deque()
queue.append('a')
queue.append('b')
queue.append('c')
print(queue)
queue.appendleft('A')
queue.appendleft('B')
print(queue)

resultado da operação:

deque(['a', 'b', 'c'])
deque(['B', 'A', 'a', 'b', 'c'])

append (item), adiciona um pedaço de dados ao final da fila. A função é semelhante ao método append () da lista.

appendleft (item), adiciona uma parte dos dados ao início da fila. Ao contrário da direção de append ().

2. Enfileirar objetos iteráveis

queue.extend(['D', 'E'])
queue.extendleft(['c', 'd'])
print(queue)

resultado da operação:

deque(['d', 'c', 'B', 'A', 'a', 'b', 'c', 'D', 'E'])

extend (iterável), adiciona os dados em um objeto iterável ao final da fila em ordem. Deve-se notar aqui que strings também são objetos iteráveis. Se você adicionar diretamente a string'ABC ',' A ',' B 'e' C 'serão adicionados à fila, porque'ABC' será tratado como um objeto iterável. Iterativamente, se você deseja adicionar 'ABC' como uma string inteira, pode colocá-lo na lista e adicionar ['ABC'] atenderá às expectativas.

extendleft (iterável), que adiciona os dados em um objeto iterável ao início da fila em ordem.

3. Insira os dados no local especificado

queue.insert(3, 'T')
print(queue)

resultado da operação:

deque(['d', 'c', 'B', 'T', 'A', 'a', 'b', 'c', 'D', 'E'])

insira (índice, item), insira um dado na posição especificada na fila e o índice é o índice da posição especificada.

O método deque em ambas as extremidades da fila é implementado na classe deque.

print(queue.pop())
print(queue.popleft())
print(queue)

resultado da operação:

E
d
deque(['c', 'B', 'T', 'A', 'a', 'b', 'c', 'D'])

pop (), pop os dados no final da fila e use-os como o valor de retorno.

popleft (), coloca os dados no topo da fila como o valor de retorno.

Dois, o método de cópia de Deque

queue_b = queue.copy()
print(queue)
print(queue_b)
print(id(queue))
print(id(queue_b))

resultado da operação:

deque(['c', 'B', 'T', 'A', 'a', 'b', 'c', 'D'])
deque(['c', 'B', 'T', 'A', 'a', 'b', 'c', 'D'])
2502045746056
2502045746992

copy (), copia a fila. Após a cópia, as operações na fila original não afetarão a fila copiada. Este método está disponível apenas em versões superiores a Python 3.5.

Três, deque retorna o número e índice do valor especificado

print(queue.count('b'))
queue.append('b')
print(queue.count('b'))
print(queue.count('z'))
print(queue.index('T'))

resultado da operação:

1
2
0
2

contagem (item), retorna o número do valor especificado na fila ou 0 se o valor não existir.

índice (item), retorna o índice do valor especificado na fila, se o valor não existir, um erro é relatado, se houver vários dados idênticos, o índice do primeiro valor da esquerda para a direita é retornado.

Quarto, a inversão e rotação do deque

print(queue)
queue.reverse()
print(queue)
queue.rotate(3)
print(queue)

resultado da operação:

deque(['c', 'B', 'T', 'A', 'a', 'b', 'c', 'D', 'b'])
deque(['b', 'D', 'c', 'b', 'a', 'A', 'T', 'B', 'c'])
deque(['T', 'B', 'c', 'b', 'D', 'c', 'b', 'a', 'A'])

reverse (), inverte a fila. Ele tem a mesma função do método reverse () da lista.

girar (num), girar os dados na fila. Cada rotação é desenfileirar os dados no final da equipe e, em seguida, entrar na fila do chefe da equipe, o que é equivalente a pop () e depois appendleft (item), retate (num) para passar o número de rotações .

Cinco, a exclusão de deque

print(queue)
queue.remove('T')
print(queue)
queue.clear()
print(queue)

resultado da operação:

deque(['T', 'B', 'c', 'b', 'D', 'c', 'b', 'a', 'A'])
deque(['B', 'c', 'b', 'D', 'c', 'b', 'a', 'A'])
deque([])

remove (item), exclui os dados especificados da fila. Se os dados especificados não existirem, um erro será relatado. Se houver vários dados idênticos, apenas os primeiros dados da esquerda para a direita serão excluídos.

clear (), limpa a fila.

Seis, deque especifica o comprimento da fila

que = collections.deque(maxlen=5)
que.extend(['a', 'b', 'c', 'd', 'e'])
print(que)
que.append('F')
print(que)
que.appendleft('A')
print(que)

resultado da operação:

deque(['a', 'b', 'c', 'd', 'e'], maxlen=5)
deque(['b', 'c', 'd', 'e', 'F'], maxlen=5)
deque(['A', 'b', 'c', 'd', 'e'], maxlen=5)

Ao instanciar a fila, você pode usar o método maxlen para especificar o comprimento da fila. Para facilidade de uso, o método maxlen é convertido em uma propriedade com propriedade na classe deque, e maxlen pode ser passado como um parâmetro quando a classe deque é inicializada.

Depois que o comprimento da fila for especificado, se a fila atingiu o comprimento máximo e os dados são adicionados do final da fila neste momento, os dados no topo da fila serão automaticamente retirados da fila. Os dados na cabeça da fila são iguais aos dados recém-adicionados no final da fila e são "espremidos" para fora da fila para garantir que o comprimento da fila não exceda o comprimento máximo especificado. Ao contrário, adicionar dados do chefe da equipe deixará automaticamente os dados no final da equipe.

 

 

Acho que você gosta

Origin blog.csdn.net/weixin_43790276/article/details/107749745
Recomendado
Clasificación