Las list comprehensions en Python te permiten crear listas en una sola línea de código, reemplazando bucles for y condicionales if extensos por una sintaxis breve, expresiva y eficiente. Si ya escribes Python y quieres código más limpio, esta técnica es para ti.
Piensa en ellas como el expreso de Python: rápidas, compactas y potentes. En lugar de inicializar una lista vacía y llenarla con append dentro de un bucle, condensas toda esa lógica en una expresión única dentro de corchetes.
Cómo se construye una list comprehension paso a paso
La estructura básica tiene tres componentes dentro de los corchetes: la operación que aplicas a cada elemento, el for que itera sobre una secuencia y, opcionalmente, un if que filtra. El orden al escribirla es de izquierda a derecha, pero al leerla mentalmente conviene ir de derecha a izquierda.
Un ejemplo clásico es calcular los cuadrados de los números del 1 al 10 [0:38]:
python
resultado = [x**2 for x in range(1, 11)]
print("Los cuadrados son:", resultado)
Esa única línea reemplaza un bucle completo. Si cambias x**2 por x**3, obtienes los cubos. La fórmula al inicio define qué se aplica a cada elemento iterado.
¿Qué es una list comprehension en Python? Es una forma de crear listas en una sola línea combinando una expresión, un for y opcionalmente un if, todo dentro de corchetes [].
Cómo aplicar fórmulas más complejas a cada elemento
Las list comprehensions no se limitan a operaciones simples. Puedes aplicar conversiones completas, como transformar grados Celsius a Fahrenheit con la fórmula temperatura * 9/5 + 32 [2:15]:
python
celsius = [0, 10, 20, 30, 40]
fahrenheit = [(temperatura * 9/5) + 32 for temperatura in celsius]
print("Temperatura en grados Fahrenheit:", fahrenheit)
El resultado es una nueva lista con cada valor convertido. Misma lógica, menos código.
Cuándo usar if dentro de una list comprehension
Cuando necesitas filtrar elementos, agregas un if después del for. La regla de notación es clara: primero va el for, después el if. Para hallar los números pares del 1 al 20 usas el módulo 2 [4:25]:
python
pares = [x for x in range(1, 21) if x % 2 == 0]
print(pares)
La lectura es directa: por cada x en el rango de 1 a 20, si x % 2 == 0, agrégalo a la lista. Cambiando la condición a x % 2 != 0 obtienes los impares.
¿Cómo se filtran elementos con list comprehension? Agregas un if al final de la expresión. Solo los elementos que cumplan la condición se incluyen en la lista resultante.
Cómo trabajar con matrices y obtener la transpuesta
La transpuesta de una matriz intercambia sus filas por columnas. Con list comprehensions anidadas, esto se resuelve en una sola línea usando dobles corchetes [6:00]:
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 original:", matriz)
print("Matriz transpuesta:", transpuesta)
El iterador i recorre las posiciones de columna usando len(matriz[0]), que devuelve la cantidad de elementos por fila. Para cada i, se construye una nueva fila tomando el elemento en posición i de cada fila original. Así, [1,2,3], [4,5,6], [7,8,9] se convierte en [1,4,7], [2,5,8], [3,6,9].
Por qué conviene comparar con la versión tradicional
El mismo cálculo de la transpuesta escrito con bucles anidados ocupa cinco o seis líneas: inicializar una lista vacía, recorrer columnas, recorrer filas, hacer append y devolver el resultado [9:30]. La list comprehension reduce todo eso a una sola expresión legible.
Para operaciones matriciales en proyectos reales, el módulo NumPy ofrece funciones optimizadas que resuelven esto aún más rápido y son el estándar en ciencia de datos.
Por qué usar list comprehensions en tu código Python
Las ventajas son concretas y se notan desde el primer uso:
- Menor cantidad de líneas de código.
- Tiempo de ejecución más eficiente que los bucles tradicionales con
append.
- Código más legible una vez te familiarizas con la sintaxis.
- Sintaxis elegante que comunica intención de forma directa.
Domina primero los casos simples con for, luego suma el if, y finalmente practica las versiones anidadas con matrices. ¿Qué fórmula vas a transformar primero en list comprehension? Cuéntame en los comentarios.