Este post es de esos que me gustan y espero que a ti también. Y me gusta porque cumple el propósito del blog: que aprendas a usar Python como un auténtico pythonista. Si has llegado hasta aquí es porque has oído hablar de las list comprehensions en Python y quieres saber qué son. Sí, si quieres ser maestr@ pythoner@ debes entender y manejar a la perfección las list comprehensions.
Qué son las list comprehensions
Básicamente son una forma de crear listas de una manera elegante simplificando el código al máximo. Como lo oyes, Python define una estructura que permite crear listas de un modo un tanto especial. Te lo mostraré con un ejemplo:
numeros = [1, 2, 34, 86, 4, 5, 99, 890, 45] pares = [] for num in numeros: if num % 2 == 0: pares.append(num) print(pares)
El código anterior crea una lista de números pares a partir de una lista de números. Para este tipo de situaciones es ideal el uso de las list comprehensions. El código anterior se puede modificar de la siguiente manera con la sintaxis de las list comprehensions:
pares = [num for num in numeros if num % 2 == 0] print(pares)
Cómo se usan las list comprehensions
La estructura de las list comprehensions es la siguiente:
[ expresion(i) for i in list if condición ]
Es decir, entre corchetes definimos una expresión seguida de un bucle for al que opcionalmente le pueden seguir otros bucles for y/o una condición.
❗️El resultado siempre es una lista.
El código anterior es similar al siguiente:
nueva_lista = [] for i in list: if condición: nueva_lista.append(expresion(i))
Ejemplos de uso de list comprehensions
A continuación te muestro diferentes formas de aplicar lo aprendido aunque ejemplos hay miles:
Capitalizar las palabras de una lista
palabras = ['casa', 'perro', 'puerta', 'pizza'] cap = [palabra.title() for palabra in palabras] print(cap)
Calcular los cuadrados del 0 al 9
cuadrados = [num**2 for num in range(10)] print(cuadrados)
Calcular los cuadrados del 0 al 9 de los números pares
cuadrados_pares = [num**2 for num in range(10) if num % 2 == 0] print(cuadrados_pares)
Listar los ficheros python del directorio actual que comienzan por ‘f’
import os ficheros_python = [f for f in os.listdir('.') if f.endswith('.py') and f.startswith('f')] print(ficheros_python)
Número, doble y cuadrado de los números del 0 al 9
num_doble_cuadrado = [(num, num*2, num**2) for num in range(10)] print(num_doble_cuadrado)
Ejemplo de doble bucle for
saludos = ['hola', 'saludos', 'hi'] nombres = ['j2logo', 'antonio', 'vega'] frases = ['{} {}'.format(saludo.title(), nombre.title()) for saludo in saludos for nombre in nombres] print(frases)
Conclusión
No se puede decir mucho más sobre el tema 😅 Solo espero que el post te sirva de inspiración para aplicarlo en tu código Python de aquí en adelante 😉
Si tienes cualquier duda al respecto o sobre otro tema, ya sabes que puedes ponerte en contacto conmigo a través de mis redes sociales o enviándome un email.