Curso de Python Intermedio para  Entornos virtuales y PEP8

Cómo convertir un ciclo for en list comprehension

Curso de Python Intermedio para Entornos virtuales y PEP8

Contenido del curso

Cómo convertir un ciclo for en list comprehension

Resumen

Si quieres escribir código más limpio y legible, las list comprehensions en Python te permiten convertir un ciclo for de varias líneas en una sola línea sin sacrificar claridad. Esta guía es para quienes ya conocen los ciclos y buscan escribir de forma más pythónica, comparando el método tradicional con su versión refactorizada.

La idea central es simple: partimos de un ciclo for normal, lo entendemos bien y luego lo transformamos. Ese proceso de refactorización es la mejor forma de comprender cómo funcionan las comprensiones de listas, diccionarios y conjuntos.

Qué es una list comprehension y cómo se construye

Una list comprehension es una expresión que crea una lista completa en una sola línea. En lugar de declarar una variable vacía, iterar con un for y agregar elementos uno a uno, defines todo dentro de corchetes.

En el ejemplo trabajamos con una lista de diccionarios de artículos y creamos una función para extraer solo los títulos [00:47]. La versión tradicional se ve así:

python def extract_titles_traditional(articles): """Extrae solo los títulos usando un for""" titles = [] for article in articles: titles.append(article["title"]) return titles

La versión con comprehension elimina la variable extra y hace la iteración dentro de los corchetes [01:32]:

python def extract_titles_comprehension(articles): """Extrae solo los títulos usando un comprehension""" return [article["title"] for article in articles]

El valor que quieres conservar va antes del for. Al probar ambas funciones con la misma lista de artículos, el resultado es idéntico [02:57]. La diferencia está en que la versión con comprehension es más fácil de leer y no guarda una nueva variable en memoria.

¿Qué es una list comprehension en Python? Es una forma de crear una lista en una sola línea escribiendo la expresión a guardar seguida de un for. Reemplaza el patrón de crear una lista vacía y usar append dentro de un ciclo.

Cómo agregar condiciones con if dentro de una comprehension

Cuando tu lógica de negocio necesita filtrar, puedes agregar un if. En el método tradicional el condicional va dentro del ciclo; en la comprehension va al final [03:35].

Supón que solo quieres títulos con más de 10 caracteres:

python def extract_titles_comprehension(articles): return [article["title"] for article in articles if len(article["title"]) > 10]

La función len() mide la longitud del título y solo agrega los que cumplen la condición. Un detalle importante: en la comprehension los dos puntos no son requeridos, lo que reduce errores humanos frente a la sintaxis tradicional, donde olvidar los dos puntos rompe el código [05:03].

Si cambias el límite a 200 caracteres, ambas listas quedan vacías porque ningún título es tan largo [04:50]. Es una forma rápida de comprobar que el filtro realmente funciona.

¿Cuándo debo usar una list comprehension? Úsala siempre que haga tu código más fácil de leer. Si la lógica se vuelve compleja o difícil de seguir, es mejor volver al ciclo for tradicional.

Cómo crear diccionarios y sets con comprehensions

Las comprensiones no se limitan a listas. También puedes crear diccionarios usando llaves en lugar de corchetes y definiendo un par llave-valor [06:39].

Imagina que quieres un resumen con el título como llave y la descripción como valor:

python def extract_article_summaries(articles): return {article["title"]: article["description"] for article in articles}

Aquí la sintaxis pide llave: valor seguida del for. Puedes agregar filtros igual que en las listas, por ejemplo, quedarte solo con descripciones de cierta longitud [07:52]:

python def extract_article_summaries(articles): return { article["title"]: article["description"] for article in articles if len(article["description"]) > 5 }

Cuando el filtro pide más de 20 caracteres, el diccionario sale vacío porque las descripciones son cortas; al bajar el umbral a 5 vuelve a poblarse [08:12].

¿Puedo usar comprehensions con diccionarios? Sí, se llaman dict comprehensions. Usas llaves {} y defines un par llave: valor antes del for, con la opción de filtrar con un if al final.

Por qué conviene formatear con Ruff

Al guardar el archivo, Ruff formatea automáticamente cada comprehension y la reorganiza en varias líneas cuando incluye iteración y condicional [02:20]. Esto ayuda a leer con claridad qué parte es la iteración, cuál es el if y cuál es el contenido que se agrega.

Entre los beneficios de usar comprehensions destacan tres puntos concretos:

  • No necesitas declarar una variable extra que ocupe memoria.
  • Reduces el código a una sola línea legible.
  • Evitas errores de sintaxis como los dos puntos olvidados del ciclo tradicional.

La recomendación práctica es clara: prioriza las comprehensions cuando mejoren la legibilidad y regresa al for tradicional cuando no.

Como reto, crea una lista sin elementos repetidos de todas las fuentes de tus artículos usando un set. Empieza con la versión tradicional y luego conviértela a una comprensión con conjuntos [09:15]. Comparte tu código en los comentarios para generar discusión y ayudar a otros estudiantes.