Listas por comprensión en Python: creación y optimización de listas

Clase 18 de 63Curso de Python

Contenido del curso

Fundamentos de Programación y Python

Programación Orientada a Objetos en Python

Conceptos avanzados de Python

Métodos y estructura de clases en Python

Resumen

Crear listas en Python puede ser mucho más rápido y expresivo de lo que imaginas. Las compression lists (también conocidas como list comprehensions) permiten construir listas completas en una sola línea de código, reemplazando bucles largos y condiciones que dificultan la lectura. A continuación se explican sus fundamentos, su sintaxis y ejemplos prácticos que van desde operaciones matemáticas hasta el manejo de matrices.

¿Qué son las compression lists y cómo funcionan?

Una compression list es una forma concisa de generar listas en Python. En lugar de escribir un bucle for, crear una lista vacía y usar append, todo se resuelve dentro de un par de corchetes. La estructura básica es:

python nueva_lista = [expresión for variable in iterable]

  • Expresión: la operación que se aplica a cada elemento.
  • Variable: el nombre temporal que toma cada elemento durante la iteración.
  • Iterable: la secuencia de datos sobre la que se recorre (un range, una lista, etc.).

Esta sintaxis reduce el tiempo de ejecución y el número de líneas, haciendo el código más legible y elegante.

¿Cómo calcular números al cuadrado con una sola línea?

El primer ejemplo consiste en obtener los cuadrados de los números del uno al diez [0:55]. Se escribe así:

python squared_numbers = [x ** 2 for x in range(1, 11)] print("Los cuadrados son:", squared_numbers)

Aquí x ** 2 es la expresión que se aplica a cada valor de x dentro del rango. El resultado es una lista con los valores 1, 4, 9, 16… hasta 100. Si se quisiera obtener el cubo, bastaría con cambiar el exponente a x ** 3 [2:07].

¿Cómo convertir grados Celsius a Fahrenheit?

También es posible aplicar fórmulas más complejas a cada elemento. Para transformar una lista de temperaturas en Celsius a Fahrenheit [2:25] se usa la fórmula clásica: multiplicar por 9/5 y sumar 32.

python celsius = [0, 10, 20, 30, 40] fahrenheit = [temp * (9/5) + 32 for temp in celsius] print("Temperatura en grados Fahrenheit:", fahrenheit)

Cada valor de la lista celsius pasa por la expresión y el resultado se almacena directamente en fahrenheit.

¿Cómo filtrar datos con if dentro de una compression list?

Las compression lists también admiten condiciones. La sintaxis cuando se combina for e if es:

python nueva_lista = [expresión for variable in iterable if condición]

Para hallar los números pares del uno al veinte [3:55] se utiliza el operador módulo (%). Si x % 2 == 0, el número es par y se incluye en la lista:

python pares = [x for x in range(1, 21) if x % 2 == 0] print(pares)

La lectura se hace de derecha a izquierda en la lógica: "por cada valor de x en el rango de 1 a 20, si x módulo 2 es igual a cero, entonces se añade a la lista". Para obtener los impares basta cambiar la condición a x % 2 != 0 [5:00].

¿Cómo trabajar con matrices usando compression lists?

Una operación frecuente en álgebra lineal es obtener la transpuesta de una matriz, que consiste en intercambiar filas por columnas [5:20]. Con compression lists anidadas se resuelve en una línea:

python matriz = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] transpuesta = [[fila[i] for fila in matriz] for i in range(len(matriz[0]))] print("Matriz:", matriz) print("Transpuesta:", transpuesta)

  • El range(len(matriz[0])) genera los índices de columna (0, 1, 2).
  • Para cada índice i, se recorre cada fila de la matriz y se extrae el elemento en la posición i.
  • El resultado: la primera columna [1, 4, 7] se convierte en la primera fila, y así sucesivamente [7:08].

¿Cuántas líneas ahorra respecto al método tradicional?

Sin compression list, el mismo ejercicio requiere seis líneas de código [8:10]:

python transpuesta = [] for i in range(len(matriz[0])): fila_nueva = [] for fila in matriz: fila_nueva.append(fila[i]) transpuesta.append(fila_nueva)

Ambos enfoques producen exactamente el mismo resultado, pero la versión con list comprehension es más compacta y fácil de mantener. Para operaciones avanzadas con matrices, el módulo NumPy ofrece funciones optimizadas que simplifican aún más este tipo de cálculos [8:30].

Si quieres dominar las compression lists, la mejor estrategia es practicar: prueba a filtrar cadenas de texto, transformar diccionarios o generar patrones numéricos. ¿Qué ejercicio vas a intentar primero? Comparte tu experiencia en los comentarios.