Clase 17 - Python
Clase 17 - Python
Módulo - PYTHON
Las operaciones distintivas de una pila son: pop(), para sacar (remover) el
elemento en el tope de la pila y push() para empujar (añadir) un elemento en el
tope.
Cada vez que se realiza una operación push() la pila aumenta de tamaño y el tope
se modifica siendo ahora el elemento añadido. En el caso de la
operación pop() disminuye el tamaño de la pila, y el tope ahora será el elemento
debajo del elemento a ser removido, generalmente esta operación devuelve el
elemento removido.
Otra operación que generalmente se implementa en una pila, es peek(), que
devuelve el elemento que se encuentra como tope de la pila, sin removerlo.
Creando una pila con Python
class Stack: def get_peek(self):
elements = [] return self.elements[-1]
def get_size(self):
return len(self.elements) s = Stack()
s.push("a")
def push(self, x): s.push("b")
self.elements.append(x) s.push("c")
s.push("d")
def pop(self): s.push("e")
return self.elements.pop() s.push("f")
s.push("h")
El código es algo simple, definimos una clase, la cual será nuestra Pila, que contiene un atributo elements, el
cual será una lista vacía. Con __init__() establecemos la lista como vacía al crear una nueva instancia. Contiene
un método get_size(), que retorna el tamaño de la pila, push() para añadir un elemento al tope de la pila, pop()
para remover el elemento en el tope y devolverlo y get_peek(), que nos devuelve el elemento en el tope sin
removerlo, en este caso utilizamos la expresión elements[-1], que es la forma de obtener el último elemento de
una lista (recuerdan que en Python, una pila no es más que una lista).
Creando una pila con Python
Paso seguido creamos una instancia y añadimos algunos valores a nuestra pila, quedando de esta forma:
◦ Definiremos una clase Pila con un atributo, items, de tipo lista, que contendrá los
ele-mentos de la pila. El tope de la pila se encontrará en la última posición de la
lista, y cada vez que se apile un nuevo elemento, se lo agregará al final.
◦ El método __init__ no recibirá parámetros adicionales, ya que deberá crear una
pila vacía (que representaremos por una lista vacía):
class Pila:
""" Representa una pila con operaciones de apilar, desapilar y verificar si
está vacía. """
def __init__(self): """ Crea una pila vacía. """
# La pila vacía se representa con una lista vacía
self.items=[]
Pilas representadas por listas
◦ El método apilar se implementará agregando el nuevo elemento al final de la lista:
◦ Para implementar desapilar, se usará el método pop de lista que hace exactamente lo requerido: elimina el último elemento de la
lista y devuelve el valor del elemento eliminado. Si la lista está vacía levanta una excepción, haremos lo mismo, pero
cambiaremos el tipo de excepción, para no revelar la implementación.
def es_vacia(self):
""" Devuelve True si la lista está vacía, False si no. ""”
return self.items == []