Introducción al uso de Python deque

Introducción al uso de Python deque

deque es una clase en las colecciones de bibliotecas estándar de Python, que implementa una cola que se puede operar en ambos extremos, lo que equivale a una cola de dos extremos, que es muy similar a la lista de tipos de datos básicos de Python.

Implementación de Python de la referencia de cola de dos extremos: https://blog.csdn.net/weixin_43790276/article/details/104033394

Cuando se usa Python para implementar una deque, se usa una lista. Puede usar una deque para comparar con deque. Hay muchos métodos implementados en la clase deque. A continuación, presentaremos el uso de la clase deque.

1. Deque unirse y dejar el equipo

La clase deque implementa una única puesta en cola de datos, un objeto iterable se pone en cola y los datos se insertan en la posición especificada.

1. Cola de datos única

# 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 de la operación:

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

append (elemento), agrega un dato al final de la cola. La función es similar al método append () de la lista.

appendleft (elemento), agrega un dato al encabezado de la cola. Contrariamente a la dirección de append ().

2. Poner en cola objetos iterables

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

resultado de la operación:

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

extender (iterable), agregue los datos en un objeto iterable al final de la cola en orden. Cabe señalar aquí que las cadenas también son objetos iterables. Si agrega directamente la cadena 'ABC', 'A', 'B' y 'C' se agregarán a la cola, porque 'ABC' se tratará como un objeto iterable. Iterativamente, si desea agregar 'ABC' como una cadena completa, puede ponerlo en la lista, y agregar ['ABC'] cumplirá con las expectativas.

extendleft (iterable), que agrega los datos en un objeto iterable al encabezado de la cola en orden.

3. Inserta datos en la ubicación especificada

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

resultado de la operación:

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

insertar (índice, elemento), insertar un dato en la posición especificada en la cola, e índice es el índice de posición especificado.

El método deque en ambos extremos de la cola se implementa en la clase deque.

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

resultado de la operación:

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

pop (), muestre los datos al final de la cola y utilícelos como valor de retorno.

popleft (), muestra los datos al principio de la cola como valor de retorno.

Dos, método de copia de deque

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

resultado de la operación:

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

copy (), copia la cola. Después de copiar, las operaciones en la cola original no afectarán a la cola copiada. Este método solo está disponible en versiones superiores a Python 3.5.

Tres, deque devuelve el número y el índice del valor especificado

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

resultado de la operación:

1
2
0
2

count (elemento), devuelve el número del valor especificado en la cola, o 0 si el valor no existe.

index (elemento), devuelve el índice del valor especificado en la cola, si el valor no existe, se reporta un error, si hay múltiples datos idénticos, se devuelve el índice del primer valor de izquierda a derecha.

Cuarto, el giro y la rotación del deque.

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

resultado de la operación:

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 (), invierte la cola. Tiene la misma función que el método reverse () de la lista.

rotar (num), rotar los datos en la cola. Cada rotación consiste en retirar los datos al final del equipo y luego ingresar a la cola desde el jefe del equipo, lo que equivale a pop () y luego anexarleft (item), retener (num) para pasar el número de rotaciones .

Cinco, la supresión de deque

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

resultado de la operación:

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

eliminar (elemento), elimina los datos especificados de la cola. Si los datos especificados no existen, se informará un error. Si hay varios datos idénticos, solo se eliminarán los primeros datos de izquierda a derecha.

clear (), borra la cola.

Seis, deque especifica la longitud de la cola.

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 de la operación:

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

Al crear una instancia de la cola, puede utilizar el método maxlen para especificar la longitud de la cola. Para facilitar su uso, el método maxlen se convierte en una propiedad con propiedad en la clase deque, y maxlen se puede pasar como parámetro cuando se inicializa la clase deque.

Una vez que se especifica la longitud de la cola, si la cola ha alcanzado la longitud máxima y se agregan datos desde el final de la cola en este momento, los datos al principio de la cola se quitarán automáticamente de la cola. Los datos al principio de la cola son iguales a los datos recién agregados al final de la cola y se "exprimen" fuera de la cola para garantizar que la longitud de la cola no exceda la longitud máxima especificada. Por el contrario, agregar datos del jefe del equipo dejará automáticamente los datos al final del equipo.

 

 

Supongo que te gusta

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