Arrays Bidimensionales en Python: Creación y Métodos Básicos

Clase 8 de 23Curso de Estructuras de Datos Lineales con Python

Resumen

¿Qué son los arrays de dos dimensiones?

Los arrays de dos dimensiones, conocidos también como bidimensionales, grid, tabla o rejilla, son estructuras fundamentales en programación. Estos arrays tienen una representación similar a una tabla, con filas y columnas, donde en la intersección de estas se encuentran los elementos. Cada elemento en un array puede tener un valor distinto. Si alguna vez has anidado listas dentro de listas, has trabajado ya con una estructura similar. Ahora aplicaremos este concepto en el contexto de nuestra clase array.

¿Cómo implementar un array de dos dimensiones?

Para implementar un array de dos dimensiones, comenzamos creando un archivo grid.py y reutilizamos la clase Array previamente desarrollada. A continuación, construimos nuestra clase Grid e inicializamos el método constructor __init__ con atributos distintos, incluidos filas, columnas, y los valores por defecto de los datos.

class Grid:
    def __init__(self, rows, columns, default_value=None):
        self.data = Array(rows)
        for row in range(rows):
            self.data[row] = Array(columns, default_value)

¿Qué métodos utilizamos?

  • Obtener altura (getHeight): Calcula la longitud de self.data para determinar el número de filas.
  • Obtener ancho (getWidth): Calcula la longitud de self.data[0], determinando el número de columnas.
  • Obtener elemento (getItem): Devuelve el valor de un elemento según su índice.
  • Representación en string (str): Usa un bucle anidado para recorrer filas y columnas, añadiendo cada elemento a un string resultado, empleando saltos de línea para mejorar la legibilidad.

Ejemplo de uso de la clase Grid

Tras definir nuestra clase, ponemos a prueba su funcionalidad en la terminal. Creamos una instancia de Grid, que denominamos Matrix, con un tamaño de 3x3. Inicialmente, los valores son None, pero podemos modificarlos.

gridInstance = Grid(3, 3)
print(gridInstance)  # Imprime el grid inicial

# Actualizamos los valores
for row in range(gridInstance.getHeight()):
    for col in range(gridInstance.getWidth()):
        gridInstance[row][col] = row * col

print(gridInstance)  # Imprime el grid actualizado con nuevos valores

¿Cómo modificar y validar los valores del Grid?

Para cambiar los valores del grid y verificar sus métodos, iteramos sobre cada fila y columna, asignando nuevos valores. Esto permite verificar los métodos de obtención de altura, ancho y elementos específicos.

# Imprimir métodos específicos
print(gridInstance.getHeight())  # Muestra el número de filas
print(gridInstance.getWidth())   # Muestra el número de columnas
print(gridInstance.getItem(1, 0))  # Obtiene el elemento en la posición específica

¿Cómo abordar arrays de tres dimensiones?

Si bien hemos trabajado con arrays bidimensionales, los arrays de tres dimensiones añaden un nivel adicional de complejidad. Un array tridimensional se define anidando un array dentro de otro en más de dos niveles. Sin embargo, recomendamos limitar la complejidad manteniéndonos en dos dimensiones siempre que sea posible. La práctica de mantener el código simple también mejora su legibilidad y administración.

Reto adicional

Tu desafío ahora es crear una clase Cube con tres dimensiones utilizando métodos similares a los que ya has practicado. Explora la obtención de largo, ancho, profundidad y la representación en string. Experimenta con diferentes estrategias para inicializar y modificar sus valores. ¡Con cada ejercicio, te acercas más a convertirte en un maestro en estructuras de datos! 🚀