Pila y colas en Python

Prerrequisitos: list y Deque en Python .

A diferencia de C++ STL y Java Collections, Python tiene clases/interfaces específicas para Stack y Queue . Las siguientes son diferentes formas de implementar en Python

1) El uso de list
Stack funciona según el principio de «Último en entrar, primero en salir». Además, las funciones integradas en Python hacen que el código sea corto y simple. Para agregar un elemento a la parte superior de la lista, es decir, para empujar un elemento, usamos la función append() y para sacar un elemento usamos la función pop() . Estas funciones funcionan de manera silenciosa, eficiente y rápida en las operaciones finales.

Veamos un ejemplo e intentemos comprender el funcionamiento de las funciones push() y pop():
Ejemplo:

# Python code to demonstrate Implementing 
# stack using list
stack = ["Amar", "Akbar", "Anthony"]
stack.append("Ram")
stack.append("Iqbal")
print(stack)
  
# Removes the last item
print(stack.pop())
  
print(stack)
  
# Removes the last item
print(stack.pop())
  
print(stack)
Producción:

['Amar', 'Akbar', 'Anthony', 'Ram', 'Iqbal']
Iqbal
['Amar', 'Akbar', 'Anthony', 'Ram']
Ram
['Amar', 'Akbar', 'Anthony']

Queue funciona según el principio de «primero en entrar, primero en salir». A continuación se muestra la implementación de la cola. Usamos pop(0) para eliminar el primer elemento de una lista.

# Python code to demonstrate Implementing 
# Queue using list
queue = ["Amar", "Akbar", "Anthony"]
queue.append("Ram")
queue.append("Iqbal")
print(queue)
  
# Removes the first item
print(queue.pop(0))
  
print(queue)
  
# Removes the first item
print(queue.pop(0))
  
print(queue)
Producción:

['Amar', 'Akbar', 'Anthony', 'Ram', 'Iqbal']
Amar
['Akbar', 'Anthony', 'Ram', 'Iqbal']
Akbar
['Anthony', 'Ram', 'Iqbal']

2) Uso de Deque
En el caso de la pila, la implementación de la lista funciona bien y proporciona tanto append() como pop() en tiempo O(1). Cuando usamos la implementación de deque, obtenemos la misma complejidad de tiempo.

# Python code to demonstrate Implementing 
# Stack using deque
from collections import deque
queue = deque(["Ram", "Tarun", "Asif", "John"])
print(queue)
queue.append("Akbar")
print(queue)
queue.append("Birbal")
print(queue)
print(queue.pop())                 
print(queue.pop())                 
print(queue)
Producción:

deque(['Ram', 'Tarun', 'Asif', 'John'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar', 'Birbal'])
Birbal
Akbar
deque(['Ram', 'Tarun', 'Asif', 'John'])

Pero cuando se trata de la cola, la implementación de la lista anterior no es eficiente. En cola cuando se hace pop() desde el principio de la lista, lo cual es lento. Esto ocurre debido a las propiedades de la lista, que es rápida en las operaciones finales pero lenta en las operaciones iniciales, ya que todos los demás elementos deben cambiarse uno por uno.
Por lo tanto, preferimos el uso de dequeue en lugar de la lista, que fue especialmente diseñado para tener agregados y elementos emergentes rápidos tanto en la parte delantera como en la trasera.

Veamos un ejemplo e intentemos entender la cola usando collections.deque:

# Python code to demonstrate Implementing 
# Queue using deque
from collections import deque
queue = deque(["Ram", "Tarun", "Asif", "John"])
print(queue)
queue.append("Akbar")
print(queue)
queue.append("Birbal")
print(queue)
print(queue.popleft())                 
print(queue.popleft())                 
print(queue)
Producción:

deque(['Ram', 'Tarun', 'Asif', 'John'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar'])
deque(['Ram', 'Tarun', 'Asif', 'John', 'Akbar', 'Birbal'])
Ram
Tarun
deque(['Asif', 'John', 'Akbar', 'Birbal'])

Este artículo es una contribución de Chinmoy Lenka . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *