Saltar al contenido principal
Conceptos básicos de Python2026-07-29 · 8 min de lectura

Explicación de las comprensiones de listas de Python: cuándo usarlas y cuándo no (2026)

Las listas por comprensión son una de las características más incomprendidas de Python. Los principiantes los evitan porque "parecen complicados". Los intermedios los usan en exceso hasta que cada tercera línea es una línea anidada que nadie puede leer. Este tutorial corrige ambos errores.

Cubriremos: la forma exacta de tres partes que sigue cada lista de comprensión, puntos de referencia frente a para / mapa / filtro, los cuatro patrones que debe reconocer a simple vista y una regla estricta sobre cuándo dejar de usar comprensiones y buscar un bucle simple en su lugar.

La forma: [ qué | fuente | filtro]

Cada lista de comprensión consta de tres partes, en este orden:

▶ PYTHONeditable · runs in your browser

Leyendo en voz alta: "dame `expresión` para cada `elemento` en `iterable`, pero sólo cuando la `condición` sea verdadera."

Comience con el bucle for equivalente y luego contraigalo:

▶ PYTHONeditable · runs in your browser

Mismo resultado: [0, 4, 16, 36, 64]. La comprensión es de una línea, asigna la lista por adelantado (sin llamadas append) y el compilador de código de bytes de Python emite LIST_APPEND, una ruta rápida que omite la búsqueda de atributos en .append.

Punto de referencia: comprensión frente a bucle for frente a mapa+filtro

Construyendo una lista de números pares al cuadrado del 0 al 100.000:

| Método | Tiempo (μs) | Relativo |

|---|---|---|

| para + .append | 4.800 | 1,9× línea de base |

| lista(mapa(..., filtro(...))) | 3.200 | 1,3× valor inicial |

| Comprensión de listas | 2.500 | 1,0× (más rápido) |

Medido en Python 3.13, ejecución única de 1000 iteraciones. Las comprensiones ganan porque no hay una llamada a función por elemento: la expresión está entre líneas.

Dicho esto: no microoptimizar. Para una lista de 100 elementos, los tres se completan en menos de 100 µs. Elija primero la legibilidad.

Los cuatro patrones que debes reconocer

1. Transforma cada elemento

▶ PYTHONeditable · runs in your browser

Reemplazo directo para map(str.title, nombres) pero no necesita ajuste list(...).

2. Filtrar sin transformar

▶ PYTHONeditable · runs in your browser

Más limpio que lista (filtro (lambda n: n> 0, números)). No se necesita "lambda".

3. Filtrar Y transformar

▶ PYTHONeditable · runs in your browser

Aquí es donde las comprensiones superan claramente a las alternativas: intente escribirlo con "mapa" + "filtro" y cuente los paréntesis.

4. Aplanar una lista anidada

▶ PYTHONeditable · runs in your browser

El orden importa: for fila en matriz se lee de izquierda a derecha como los bucles for anidados equivalentes. Este es el único patrón en el que las comprensiones anidadas siguen siendo legibles; cualquier cosa más profunda necesita un bucle.

Cuándo DEJAR de usar comprensiones

Tres reglas estrictas, en orden de importancia:

1. Tres o más cláusulas `for` → usan un bucle. Una comprensión triplemente anidada es ilegible incluso para la persona que la escribió hace 20 minutos.

▶ PYTHONeditable · runs in your browser

2. Efectos secundarios → use un bucle. Las comprensiones sirven para construir una lista. Si llama a una función por sus efectos secundarios (escribir en un archivo, enviar una solicitud), utilice un bucle. [print(x) for x in items] es un olor a código: estás creando una lista desechable de Ninguno.

3. La expresión tiene más de 60 caracteres → divídala. Si necesita pensar durante más de 3 segundos para analizarla, divídala en una función con nombre o en un bucle.

Dicta y establece comprensiones: la misma forma

Misma sintaxis, diferentes corchetes:

▶ PYTHONeditable · runs in your browser

Las comprensiones de dictados son especialmente útiles para invertir una asignación ({v: k for k, v in d.items()}) o crear una tabla de búsqueda a partir de una lista.

Expresiones generadoras: el primo amigable con la memoria

Suelta los corchetes, mantén los paréntesis:

▶ PYTHONeditable · runs in your browser

Para sum, min, max, any, all, ", ".join(...) y otras funciones que se iteran una vez, prefiera la expresión generadora: guarda la asignación de la lista intermedia. Para cualquier cosa que necesite indexar o iterar dos veces, utilice una comprensión.

Práctica: tres ejercicios

Reescribe cada uno usando una lista de comprensión. Las soluciones están al final.

1. Dadas palabras = ["gato", "elefante", "perro", "hipopótamo"], obtenga una lista de palabras de más de 4 caracteres, todas en mayúsculas.

2. Dado data = [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}], extraiga una lista solo de los nombres.

3. Dados pares = [(1, 2), (3, 4), (5, 6)], obtenga una lista de las sumas de cada par.

Soluciones:

▶ PYTHONeditable · runs in your browser

La comprensión de listas es una característica distintiva de Python: saber cuándo alcanzar una (y cuándo dejarla como un bucle "for") es un marcador confiable de fluidez de nivel intermedio. Practique reescribiendo los bucles for + .append existentes que encuentre en su propio código; No todos deberían comprenderlo, pero los que deberían resultar obvios después de una semana.

Siguiente paso: pruebe 5 lecciones interactivas sobre listas por comprensión con Python real ejecutándose en su navegador y un mentor de IA en cada paso.

¿Listo para probarlo?

15 lecciones gratis después de un registro gratuito, sin tarjeta. Pruebe la plataforma y luego decida.

Empieza gratis →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.