-
Introducción
En la clase 12, nos adentramos en el estudio de los arreglos multidimensionales y los métodos más comunes que se utilizan para manipular y gestionar listas en Python. Los arreglos multidimensionales, comúnmente conocidos como matrices, son estructuras de datos esenciales en programación que permiten organizar datos en múltiples dimensiones, representados en filas y columnas. En esta clase, aprenderemos cómo crear y manipular matrices bidimensionales utilizando listas de listas en Python. Además, exploraremos cómo trabajar con estos arreglos para realizar operaciones matemáticas y organizar datos de manera eficiente. Esta parte del curso es crucial para abordar problemas más complejos, como el procesamiento de imágenes o el análisis de datos, donde la organización tabular de la información es fundamental.
A lo largo de esta clase, también profundizaremos en los métodos comunes que Python proporciona para modificar, ordenar y gestionar listas. Herramientas como append(), remove(), sort(), reverse(), y extend() serán fundamentales para aprender a manejar y optimizar el trabajo con listas. Estas funciones son esenciales para realizar operaciones eficientes sobre las listas y mejorar la estructura de nuestros programas. Además, veremos cómo aplicar estos métodos en situaciones prácticas, como filtrar, modificar y organizar los datos dentro de las listas, lo que permite a los estudiantes trabajar de manera más ágil y precisa en la manipulación de colecciones de datos.
-
12.1. Arreglos multidimensionales (matrices).
Los arreglos multidimensionales son estructuras de datos avanzadas que nos permiten almacenar y organizar información en más de una dimensión. En términos simples, los arreglos unidimensionales son como una lista lineal, mientras que los arreglos multidimensionales permiten representar datos en una forma de tabla, como una matriz. En programación, las matrices son esenciales para representar datos organizados en filas y columnas, lo que es fundamental para resolver muchos problemas en áreas como álgebra, análisis de datos, procesamiento de imágenes, simulaciones científicas, entre otros.
¿Qué es una Matriz?
Una matriz es una estructura bidimensional que consta de filas y columnas, donde cada posición o elemento se define por dos índices: uno para la fila y otro para la columna. En términos más generales, una matriz puede tener más de dos dimensiones, pero en este caso, nos centramos en matrices bidimensionales, es decir, matrices que tienen dos dimensiones: una que corresponde a las filas y otra que corresponde a las columnas.
Por ejemplo, si tenemos una matriz de 2x3 (dos filas y tres columnas), se vería algo como esto:
Código
Matriz 2x3: 1 2 3 4 5 6
Cada número en la matriz tiene dos índices: uno para la fila y otro para la columna. El elemento 1 se encuentra en la fila 0, columna 0 (índice [0][0]), el elemento 5 se encuentra en la fila 1, columna 1 (índice [1][1]), y así sucesivamente.
Cómo Representar y Crear Matrices en PythonEn Python, las matrices se representan utilizando listas de listas. Es decir, se crea una lista principal que contiene otras listas, y cada lista interna representa una fila de la matriz. Los elementos dentro de cada lista son las columnas de la matriz. Este enfoque es sencillo y flexible, aunque en algunos contextos más avanzados, como en cálculos científicos, se utilizan bibliotecas como NumPy para trabajar con matrices de manera más eficiente.
Figura 1: Diagrama de flujo de una matriz bidimensional Fuente: Creación de autor, D. Nicolalde. Figura 1: Diagrama de flujo de una matriz bidimensional Fuente: Creación de autor, D. Nicolalde.
Descripción: Este diagrama ilustra cómo se organiza una matriz de dos dimensiones, con filas y columnas, y cómo acceder a un elemento utilizando dos índices: uno para la fila y otro para la columna.
Sintaxis de Arreglos MultidimensionalesEn Python, para crear una matriz de dos dimensiones (una lista de listas), podemos hacer lo siguiente:
Código
# Matriz 2x3 (2 filas y 3 columnas) matriz = [[1, 2, 3], [4, 5, 6]]
En este ejemplo:
- La lista matriz es la matriz principal que contiene dos listas internas.
- La primera lista interna [1, 2, 3] representa la primera fila de la matriz.
- La segunda lista interna [4, 5, 6] representa la segunda fila de la matriz.
- Cada número dentro de las listas internas representa un elemento de la matriz en una columna correspondiente.
Figura 2: Acceso a elementos de una matriz Fuente: Creación de autor, D. Nicolalde. Figura 2: Acceso a elementos de una matriz Fuente: Creación de autor, D. Nicolalde.
Descripción: Este diagrama muestra cómo se accede a los elementos de una matriz bidimensional utilizando dos índices: uno para las filas y otro para las columnas.
Ejemplo: Matriz 2x3Imaginemos que tenemos la siguiente matriz que representa las calificaciones de los estudiantes en tres exámenes:
Código
Matriz de calificaciones (2x3): 90 85 78 88 92 80
En Python, representamos esta matriz como:
Resultado
calificaciones = [[90, 85, 78], [88, 92, 80]]
Características y Usos de las Matrices:Las matrices se utilizan comúnmente para representar datos que tienen una estructura tabular, como:
- Datos numéricos: Las matrices se utilizan para almacenar y manipular datos numéricos en muchas aplicaciones científicas, como álgebra lineal, procesamiento de imágenes, y más.
- Tablas de datos: Las matrices pueden ser una representación útil de tablas de datos, donde cada fila es una entrada y cada columna es un atributo o característica de esos datos.
- Cálculos matemáticos: En matemáticas, las matrices se usan para resolver ecuaciones lineales y sistemas de ecuaciones, y son fundamentales para la implementación de algoritmos como la multiplicación de matrices, determinantes y más.
Acceso a los Elementos de una Matriz:Para acceder a los elementos de una matriz en Python, se utilizan dos índices: uno para la fila y otro para la columna. La sintaxis para acceder a un elemento es la siguiente:
Código
matriz[fila][columna]
Donde:
- fila es el índice de la fila que deseas acceder (comienza desde 0).
- columna es el índice de la columna que deseas acceder (también comienza desde 0).
Por ejemplo, para acceder al elemento en la primera fila y segunda columna (el valor 2 en el ejemplo anterior), usamos:
Ejemplo de acceso y modificación a Elementos de una MatrizCódigo
# Matriz 2x3 matriz = [[1, 2, 3], [4, 5, 6]] # Acceder al elemento en la primera fila y segunda columna print(matriz[0][1]) # Imprime 2
Explicación:
- matriz[0][1]: Accede al primer elemento de la primera fila (1) y luego accede al segundo elemento de la primera fila (2).
- Los índices empiezan en 0, lo que significa que matriz[0] se refiere a la primera fila y matriz[0][1] a la segunda columna de esa fila.
Para modificar un elemento de la matriz, simplemente asignas un nuevo valor al índice deseado:
Código
# Matriz 2x3 matriz = [[1, 2, 3], [4, 5, 6]] matriz [0][1] = 20 # Acceder al elemento en la primera fila y segunda columna print(matriz[0][1]) # Imprime 20
Operaciones Comunes con Matrices:Las matrices son útiles para realizar diversas operaciones, como:
- Suma de matrices: Para sumar matrices, ambas matrices deben tener las mismas dimensiones. Se suman los elementos correspondientes de cada posición de las matrices.
- Multiplicación de matrices: Para multiplicar matrices, el número de columnas de la primera matriz debe ser igual al número de filas de la segunda matriz. La multiplicación se realiza combinando las filas de la primera matriz con las columnas de la segunda.
- Transposición de matrices: La transposición de una matriz consiste en intercambiar las filas y las columnas de la matriz.
Aprende más
Este video ofrece una introducción clara y concisa sobre qué son las matrices en programación ¡Accede aquí!
-
12.2. Métodos comunes de arreglos (ej: append(), sort() en Python).
En Python, los arreglos (listas) vienen con una variedad de métodos incorporados que permiten manipularlos de manera eficiente. Estos métodos son esenciales para modificar, ordenar y gestionar los elementos de las listas. A continuación, profundizaremos en algunos de los métodos más útiles como append(), remove(), sort(), entre otros.
Figura 3: Diagrama de flujo de append() Fuente: Creación de autor, D. Nicolalde. Figura 3: Diagrama de flujo de append() Fuente: Creación de autor, D. Nicolalde.
Descripción: Este diagrama muestra cómo el método append() agrega un nuevo elemento al final de una lista existente.
Ejemplo de Uso de append()Código
# Crear una lista numeros = [1, 2, 3] # Agregar un nuevo número al final de la lista numeros.append(4) # Imprimir la lista print(numeros) # Imprime [1, 2, 3, 4]
Explicación:
- append(4): Añade el número 4 al final de la lista numeros.
- El método append() es simple y eficiente cuando necesitamos agregar un solo elemento a una lista sin necesidad de especificar la posición exacta.
Figura 4: Diagrama de flujo de sort() Fuente: Creación de autor, D. Nicolalde. Figura 4: Diagrama de flujo de sort() Fuente: Creación de autor, D. Nicolalde.
Descripción: Este diagrama muestra cómo el método sort() ordena los elementos de una lista en orden ascendente.
Ejemplo de Uso de sort()Código
# Crear una lista desordenada numeros = [5, 3, 8, 1, 4] # Ordenar la lista numeros.sort() # Imprimir la lista ordenada print(numeros) # Imprime [1, 3, 4, 5, 8]
Explicación
- sort(): Ordena los elementos de la lista numeros en orden ascendente.
- Este método es muy útil para organizar los elementos de una lista, ya sea para visualización, búsqueda o procesamiento.
Ejemplo: Filtrar y Modificar Elementos en una ListaSupongamos que tenemos una lista de números, y queremos:
- Agregar algunos números nuevos.
- Ordenar la lista.
- Eliminar los números impares.
- Imprimir solo los números pares.
Código
# Lista de números numeros = [10, 15, 20, 25, 30] # Agregar más números usando append numeros.append(35) numeros.append(40) # Ordenar la lista numeros.sort() # Eliminar los números impares usando un bucle numeros_pares = [] for numero in numeros: if numero % 2 == 0: numeros_pares.append(numero) # Imprimir los números pares print(numeros_pares) # Imprime [10, 20, 30, 40]
Salida:
Resultado
[10, 20, 30, 40] Explicación:
- append(): Se añaden los números 35 y 40 al final de la lista.
- sort(): La lista se ordena en orden ascendente.
- for: El bucle recorre la lista y solo agrega los números pares a una nueva lista numeros_pares.
- Filtrado de pares: En este caso, solo los números que son divisibles por 2 son agregados a la lista final.
Ejemplo de Uso de reverse()Código
# Crear una lista de números numeros = [1, 2, 3, 4, 5] # Invertir el orden de la lista numeros.reverse() # Imprimir la lista invertida print(numeros) # Imprime [5, 4, 3, 2, 1]
Explicación:
- reverse(): Este método invierte la lista in situ, es decir, modifica la lista original. En este caso, la lista numeros pasa de ser [1, 2, 3, 4, 5] a [5, 4, 3, 2, 1].
- No se necesita crear una nueva lista para la inversión; el método opera directamente sobre la lista existente.
- Este método es particularmente útil en situaciones donde se necesita trabajar con los datos en orden inverso, por ejemplo, cuando se está procesando una secuencia de datos en reversa, como una pila.
Figura 5: Diagrama de flujo de reverse() Fuente: Creación de autor, D. Nicolalde. Figura 5: Diagrama de flujo de reverse() Fuente: Creación de autor, D. Nicolalde.
Descripción: Este diagrama muestra cómo el método reverse() invierte el orden de los elementos de una lista.
Ejemplo de Bucle Anidado con range() para Recorrer una MatrizCódigo
# Crear una matriz 3x3 (lista de listas) matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] # Recorrer la matriz con bucles anidados for i in range(len(matriz)): # Bucle para filas for j in range(len(matriz[i])): # Bucle para columnas print(f"Elemento en posición ({i},{j}): {matriz[i][j]}")
Explicación:
- range(len(matriz)): El primer bucle itera sobre las filas de la matriz (en este caso, 3 filas).
- range(len(matriz[i])): El segundo bucle itera sobre los elementos dentro de cada fila.
- matriz[i][j]: Accede al elemento en la fila i y columna j de la matriz. Cada vez que los bucles se ejecutan, se imprime el elemento de la posición actual.
Salida:
Resultado
Elemento en posición (0,0): 1
Elemento en posición (0,1): 2
Elemento en posición (0,2): 3
Elemento en posición (1,0): 4
Elemento en posición (1,1): 5
Elemento en posición (1,2): 6
Elemento en posición (2,0): 7
Elemento en posición (2,1): 8
Elemento en posición (2,2): 9
Figura 6: Diagrama de flujo de bucles anidados con range() Fuente: Creación de autor, D. Nicolalde. Figura 6: Diagrama de flujo de bucles anidados con range() Fuente: Creación de autor, D. Nicolalde.
Descripción: Este diagrama muestra cómo se utilizan bucles anidados junto con range() para recorrer listas dentro de listas (estructuras bidimensionales).
Aprende más
En Python, las listas son una estructura de datos muy versátil y poderosa que permite almacenar y manipular colecciones de elementos. ¡Accede aquí!
Ejemplo completoEn este ejemplo, vamos a crear un programa que maneje el inventario de una tienda. El sistema permitirá ingresar productos con su nombre, cantidad en stock y precio. Luego, se mostrará el inventario completo, y se ofrecerá la opción de filtrar los productos según su cantidad (si están disponibles o no) o agregar nuevos productos.
Código
# Inventario inicial: lista de diccionarios inventario = [ {'producto': 'Camiseta', 'cantidad': 10, 'precio': 15.5}, {'producto': 'Pantalón', 'cantidad': 5, 'precio': 25.0}, {'producto': 'Zapatos', 'cantidad': 0, 'precio': 40.0} ] # Función para agregar un producto al inventario def agregar_producto(nombre, cantidad, precio): inventario.append({'producto': nombre, 'cantidad': cantidad, 'precio': precio}) # Menú interactivo para gestionar el inventario while True: print("\n1. Ver inventario") print("2. Agregar producto") print("3. Filtrar productos con stock") print("4. Salir") opcion = input("Seleccione una opción: ") if opcion == "1": # Mostrar inventario completo for producto in inventario: print(f"{producto['producto']}: {producto['cantidad']} en stock, Precio: ${producto['precio']}") elif opcion == "2": # Ingresar un nuevo producto nombre = input("Ingrese el nombre del producto: ") cantidad = int(input("Ingrese la cantidad de productos: ")) precio = float(input("Ingrese el precio del producto: ")) agregar_producto(nombre, cantidad, precio) elif opcion == "3": # Filtrar productos con stock disponible print("\nProductos con stock disponible:") for producto in inventario: if producto['cantidad'] > 0: print(f"{producto['producto']} - {producto['cantidad']} en stock") else: print(f"{producto['producto']} - Agotado") elif opcion == "4": print("Gracias por usar el sistema de gestión de inventario.") break else: print("Opción no válida. Intente nuevamente.")
Explicación
- Inventario: Se crea una lista de diccionarios que representa el inventario de productos. Cada diccionario tiene el nombre del producto, la cantidad disponible y el precio.
- Bucle while: Permite al usuario interactuar con el sistema repetidamente hasta que decida salir.
- append(): Utilizado para agregar nuevos productos al inventario.
- Bucle for: Se utiliza para recorrer el inventario y mostrar los productos.
- if y else: Se utilizan para realizar decisiones, como mostrar los productos con stock o los productos agotados.
- continue: Si se ingresa una opción no válida, el bucle continúa sin interrumpir el flujo del programa.
- break: Permite salir del bucle while cuando el usuario selecciona la opción de salir.
Salida
Resultado
1. Ver inventario
2. Agregar producto
3. Filtrar productos con stock
4. Salir
Seleccione una opción: 1
Camiseta: 10 en stock, Precio: $15.5
Pantalón: 5 en stock, Precio: $25.0
Zapatos: 0 en stock, Precio: $40.0Este ejemplo final utiliza una combinación de las estructuras y métodos que aprendimos a lo largo de las clases, incluyendo el uso de listas, bucles, condiciones, y manejo de entradas del usuario. Los estudiantes ahora pueden comprender cómo trabajar con listas y bucles para crear programas interactivos más complejos y eficientes.
Los métodos mostrados en la tabla 1 son esenciales para manejar y manipular listas en Python. A continuación, se explica cada uno de ellos en detalle:
Método Descripción Ejemplo de Uso append() Agrega un elemento al final de la lista. numeros.append(6) remove() Elimina la primera aparición del valor especificado. numeros.remove(3) sort() Ordena los elementos de la lista. numeros.sort() reverse() Invierte el orden de los elementos de la lista. numeros.reverse() extend() Agrega los elementos de otra lista al final de la lista original. numeros.extend([7, 8]) Tabla 1: Métodos Comunes de las Listas en Python append()Descripción: Agrega un elemento al final de la lista.
Ejemplo: numeros.append(6)
remove()Descripción: Elimina la primera aparición del valor especificado.
Ejemplo: numeros.remove(3)
sort()Descripción: Ordena los elementos de la lista.
Ejemplo: numeros.sort()
reverse()Descripción: Invierte el orden de los elementos de la lista.
Ejemplo: numeros.reverse()
extend()Descripción: Agrega los elementos de otra lista al final de la lista original.
Ejemplo: numeros.extend([7, 8])
La tabla 1 resume los métodos más comunes de las listas en Python y sus ejemplos de uso, lo que permite a los estudiantes manipular y gestionar listas de manera más eficiente.
En la tabla 2 se compara dos de los métodos más utilizados para agregar elementos a una lista en Python: append() y extend(). A continuación, se detallan sus diferencias clave y cómo elegir cuál usar según las necesidades del programa.
Característica append() extend() Funcionalidad Agrega un solo elemento al final de la lista. Agrega todos los elementos de un iterable al final de la lista. Modificación Modifica la lista original agregando un solo elemento. Modifica la lista original agregando múltiples elementos. Uso típico Para agregar un solo elemento (número, cadena, etc.). Para agregar varios elementos de otro iterable. Tabla 2: Diferencias entre append() y extend() append()Funcionalidad: Agrega un solo elemento al final de la lista.
Modificación: Modifica la lista original agregando un solo elemento.
Uso típico: Para agregar un solo elemento (número, cadena, etc.).
extend()Funcionalidad: Agrega todos los elementos de un iterable al final de la lista.
Modificación: Modifica la lista original agregando múltiples elementos.
Uso típico: Para agregar varios elementos de otro iterable.
La tabla 2 muestra la diferencia entre los métodos append() y extend(). append() es útil cuando se quiere agregar un solo elemento al final de una lista, mientras que extend() se utiliza para agregar varios elementos de otro iterable.
Profundiza más
Este recurso te ayudará a enfatizar sobre (TEMA) ¡Accede aquí!
-
-
-
Actividades
-
Make attempts: 1
-
Estructuras de control en conjunto y arreglos (Parte 2)
-
Make attempts: 1