Saltar al contenido principal

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

  1. Concisas: Reducen 3 o 4 líneas de código a una sola.
  2. Legibles: Una vez que te acostumbras a la sintaxis, se leen casi como lenguaje natural matemático.
  3. Rendimiento: Generalmente, las list comprehensions son ligeramente más rápidas que usar bucles for tradicionales 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 for tradicional por el bien de la legibilidad.