Python

Listas por comprensión en Python

Las listas por comprensión es una construcción sintáctica disponible en Python con la que se pueden crear lista a partir de otros elementos iterables. Siendo una de las contracciones más elegantes del lenguaje. A continuación, se mostrará la sintaxis básica para trabajar con las listas por comprensión.

Sintaxis de las listas por comprensión en Python

Las sintaxis básicas de las listas por comprensión en Python se pueden resumir en la siguiente línea:

nueva_lista = [expresion bucle_for condiciones]

Entre corchetes se escribe una expresión seguida de un bucle for sobre el que se itera, para finalmente escribir unas condiciones.

Ejemplo básico de uso

Un ejemplo básico de uso de las listas por comprensión es aplicar una operación sobre un vector. Por ejemplo, añadir una cantidad a todos los elementos de este. Lo que se puede hacer con un bucle tradicional

numbers = [1, 2, 3, 4]
results = []

for n in numbers:
    results.append(n + 1)
    
results
[2, 3, 4, 5]

Aunque es más elegante utilizar las listas por comprensión

numbers = [1, 2, 3, 4]
results = [n + 1 for n in numbers]

Obteniéndose el mismo resultado solamente con mucho menos código. En el código los corchetes indican que la salida de la lista n + 1 es la expresión que ejecutar para cada uno de los elementos del bucle for. Es decir, que a cada uno de los valores sobre los que se itera se añada se le sume la unidad.

Condiciones en las listas por comprensión

Tal como se ha indicado anteriormente es posible añadir condiciones a las listas por comprensión en Python. Para lo que solemne se tiene que agregar un if al final con la condición. Siguiendo con el ejemplo anterior, se podría sumar uno solamente a los registros que sean menores que tres.

numbers = [1, 2, 3, 4]
results = [n + 1 for n in numbers if n < 3]
results
[2, 3]

Al ejecutar el código se puede observar que solamente se tienen dos registros, los que cumple la condición. En el caso de que se desee realizar una operación diferente cuando no se cumple la condición se puede hacer con un else. Aunque es necesario cambiar modificar el orden. Si se utiliza un else la condición se tiene que situar justamente después de la expresión y antes del for. Por ejemplo, en el siguiente código los números mayores o iguales que tres se dejan sin modificar.

numbers = [1, 2, 3, 4]
results = [n + 1 if n < 3 else n for n in numbers]
results
[2, 3, 3, 4]

Identificar los numero comunes en dos listas

La posibilidad de anidar bucles for en las listas por comprensión permiten realizar operaciones realmente completadas. Así se puede iterar sobre varios objetos iterables para aplicar una condición.

Un ejemplo típico de esto es buscar el conjunto de elementos comunes en dos listas. Lo que se puede conseguir de con el siguiente código.

names_1 = ['Oralie' ,'Imojean' ,'Michele', 'Ailbert', 'Stevy']
names_2 = ['Jayson', 'Oralie' ,'Michele', 'Stevy', 'Alwyn']

common = [a for a in names_1 for b in names_2 if a == b]
common
['Oralie', 'Michele', 'Stevy']

En donde se selecciona el valor de la primera lista si al iterar sobre la segunda también se encuentra en esta. Si no aparece el registro de ignorará. Para hacer esto mismo con un bucle for tradicional es necesario escribir mucho más código.

list_a = ['Oralie' ,'Imojean' ,'Michele', 'Ailbert', 'Stevy']
list_b = ['Jayson', 'Oralie' ,'Michele', 'Stevy', 'Alwyn']
common = []

for a in names_1:
    for b in names_2:
        if a == b:
            common.append(a)

Conclusiones

En esta entrada se han visto las listas por comprensión en Python, una construcción sintáctica disponible que ofrece grandes posibilidades. Permitiendo crear código más compacto y legible.

Las listas por comprensión son otra de las herramientas disponibles en Python que permite crear código compacto y elegante. Como los que se ha visto en la introducción a la programación funcional.

Imágenes: Pixabay (Pexels)

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Actualizar expresslanets a ES Modules con tsx y Vitest

expresslanets es la plantilla de API REST con Express y TypeScript que empezó como una…

4 días ago

Pareto/NBD: cuando el abandono silencioso cambia el CLV

En el artículo del Dashboard vimos que Pareto/NBD aparecía junto a BG/NBD con un ajuste…

6 días ago

Por qué migrar tus proyectos TypeScript a ES Modules en 2026

Durante años, CommonJS (require/module.exports) ha sido la forma por defecto de organizar módulos en Node.js,…

2 semanas ago

Método del codo: interpretación correcta y limitaciones

Cuando usas k-means tienes que decidir algo incómodo de entrada: cuántos grupos, , vas a…

2 semanas ago

Errores comunes al interpretar resultados estadísticos

La estadística no suele fallar en los cálculos: falla en la interpretación. El test está…

3 semanas ago

Dashboard CLV: cuatro modelos, un mismo dataset, conclusiones muy distintas

Los artículos anteriores de esta serie cubrieron cuatro formas de mirar el valor del cliente:…

3 semanas ago

This website uses cookies.