Comprensión de Listas (List Comprehensions)
La comprensión de listas es una de las características más amadas y distintivas de Python. Proporciona una forma concisa y elegante de crear listas basándose en listas existentes (o cualquier objeto iterable).
¿Cómo funciona?
Básicamente, comprime un bucle for y una declaración if dentro de una sola línea de código encerrada entre corchetes [].
Sintaxis básica:
[expresion for elemento in iterable if condicion]
Ejemplo Clásico: Elevar al cuadrado
Supongamos que tenemos una lista de números y queremos crear una nueva lista con los cuadrados de esos números.
El enfoque tradicional (usando un bucle for):
numeros = [1, 2, 3, 4, 5]
cuadrados = []
for n in numeros:
cuadrados.append(n ** 2)
print(cuadrados) # Salida: [1, 4, 9, 16, 25]
Con List Comprehension:
numeros = [1, 2, 3, 4, 5]
cuadrados = [n ** 2 for n in numeros]
print(cuadrados) # Salida: [1, 4, 9, 16, 25]
Añadiendo Condicionales (Filtros)
Puedes agregar una condición if al final para filtrar los elementos.
Ejemplo: Obtener solo los números pares:
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
pares = [n for n in numeros if n % 2 == 0]
print(pares) # Salida: [2, 4, 6, 8, 10]
Ventajas
- Concisas: Reducen 3 o 4 líneas de código a una sola.
- Legibles: Una vez que te acostumbras a la sintaxis, se leen casi como lenguaje natural matemático.
- Rendimiento: Generalmente, las list comprehensions son ligeramente más rápidas que usar bucles
fortradicionales con.append()porque están optimizadas en C subyacente de Python.
⚠️ Advertencia de Clean Code: Úsalas solo cuando la lógica sea simple. Si tu expresión incluye múltiples bucles o condiciones complejas, es mejor usar un bucle
fortradicional por el bien de la legibilidad.