Continuando con nuestro estudio sobre las estructuras en Python, hoy toca los vectores, que son un tipo de dato base para construir estructuras abstractas en las que profundizaremos(pilas y colas).

datos abstractos (ADTs)

Los ADTs son abstracciones de alto nivel cuyo comportamiento se define mediante un conjunto de variables y un conjunto de operaciones relacionadas.

Los ADTs proporcionan una guía de implementación sobre “qué” esperar, pero dan al programador libertad en “cómo” se implementará exactamente. Ejemplos de ADTs incluyen colas y pilas.

Vectores

En Python, un vector es como una fila o una columna ordenada de elementos similares.

Los vectores son muy útiles porque:

  • Son fáciles de crear y usar: Puedes crear un vector usando corchetes [] e introduciendo los elementos separados por comas.
[1, 2, 3, "Hola"]

Un vector pueden almacenar diferentes tipos de datos, como números enteros, números decimales, cadenas de texto, o incluso otros vectores.

Son eficientes para acceder y modificar elementos, puedes usar su índice (una posición numerada que comienza en 0). Esto la verdad suena muy familiar, y es que si, básicamente un vector es una lista en Python, anteriormente ya las habíamos estudiado. Sin embargo, es un breve repaso por que ahora trabajaremos con las Pilas y Colas y los vectores son la base.

Pilas(Stacks)

Una pila es como una pila de platos en un restaurante. Solo puedes añadir y quitar platos de la parte superior. Funciona de manera similar con los datos.

LIFO (Último en entrar, primero en salir): Los elementos se agregan en la “cima” y se eliminan de la “cima” también.

Muchos programas, como editores de texto o software de diseño, utilizan FILO para implementar la funcionalidad de deshacer y rehacer acciones. Al deshacer, se elimina el elemento más reciente (la última acción realizada) y al rehacer, se vuelve a agregar. El famoso “Ctrl+Z”.

La pila nos permite hacer push para agregar elementos, pop para remover el ultimo elemento o usar la validación isEmpty para saber si esta vacío.

pila de platos
class Pila:
  """
  Clase que implementa una pila LIFO (Last In, First Out) en Python.
  """
  def __init__(self):
    self.items = []

  def esta_vacia(self):
    #return self.items == []
    return self.isEmpty()

  def apilar(self, item):
    self.items.append(item)

  def desapilar(self):
    if self.esta_vacia():
      raise ValueError("La pila está vacía")
    return self.items.pop()

  def inspeccionar(self):
    if self.esta_vacia():
      raise ValueError("La pila está vacía")
    return self.items[-1]

  def tamanno(self):
    return len(self.items)

Colas(Queues)

cola de patitos

Imagina una fila de personas esperando por algo, como un autobús o un pedido en una cafetería. Esta fila es similar a como funciona una cola en los computadores, pero en lugar de personas, almacena información.

FIFO (Primero en Entrar, Primero en Salir): Este es el principio clave de una cola. Al igual que en una fila real, la primera persona que se une (agrega su información) es la primera en ser atendida (eliminada de la cola).

Un ejemplo real de la implementación de una cola es una lista de canciones que se reproducirán en el orden en que se agregaron.

class Cola:
  """
  Clase que implementa una cola FIFO (First In, First Out) en Python.
  """
  def __init__(self):
    self.items = []

  def esta_vacia(self):
    return self.items == []

  def encolar(self, item):
    self.items.append(item)

  def desencolar(self):
    if self.esta_vacia():
      raise ValueError("La cola está vacía")
    return self.items.pop(0)

  def inspeccionar(self):
    if self.esta_vacia():
      raise ValueError("La cola está vacía")
    return self.items[0]

  def tamanno(self):
    return len(self.items)

Llegamos por ahora hasta aquí, nos vemos en el próximo post donde veremos los arboles y como funcionan. ¡Cada vez se pone mas interesante! 😲😊 Deja tus comentarios y dudas.


¡Conviértete en un experto tecnológico! 🚀 Suscríbete a nuestro newsletter y recibe las últimas noticias, análisis y tendencias directamente en tu bandeja de entrada. No te pierdas las actualizaciones que harán que tu experiencia tecnológica sea aún más emocionante. ¡Únete a nuestra comunidad hoy! 📧✨