Explicación de las listas por comprensión en Python con ejemplos

Las listas por comprensión proporcionan una forma concisa de crear listas en Python. Son más legibles y, a menudo, más eficientes que el uso de bucles tradicionales. En este artículo, se analizará qué son las listas por comprensión, cómo funcionan y se brindarán ejemplos para ilustrar su uso.

¿Qué es una lista por comprensión?

Una comprensión de listas es una forma compacta de procesar todos o parte de los elementos de una colección y devolver una lista con los resultados. La sintaxis de una comprensión de listas es:

[expression for item in iterable if condition]

Aquí, expression es el elemento actual en la iteración, pero también es el resultado, que puedes manipular antes de que termine como un elemento de lista. iterable es la colección por la que estás recorriendo el bucle, y condition es un filtro opcional que solo incluye elementos que satisfacen la condición.

Ejemplos básicos

Creando una lista de cuadrados

Para crear una lista de cuadrados de números del 0 al 9, puedes utilizar una lista por comprensión de la siguiente manera:

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = [x ** 2 for x in numbers]
print(squares)

Producción:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Filtrar elementos

También puedes agregar una condición para filtrar elementos. Por ejemplo, para obtener solo los números pares de la lista:

even_squares = [x ** 2 for x in numbers if x % 2 == 0]
print(even_squares)

Producción:

[0, 4, 16, 36, 64]

Aplanamiento de una lista de listas

Si tienes una lista de listas y quieres aplanarla, puedes utilizar una comprensión de lista:

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [item for sublist in list_of_lists for item in sublist]
print(flattened)

Producción:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

Ejemplos avanzados

Aplicación de funciones

Puedes aplicar funciones dentro de una comprensión de listas. Por ejemplo, para convertir una lista de cadenas a mayúsculas:

words = ['hello', 'world', 'python']
uppercase_words = [word.upper() for word in words]
print(uppercase_words)

Producción:

['HELLO', 'WORLD', 'PYTHON']

Comprensiones anidadas

Las listas por comprensión se pueden anidar. Por ejemplo, para crear una lista de tuplas (i, j) donde i y j son elementos de dos listas:

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
pairs = [(i, j) for i in list1 for j in list2]
print(pairs)

Producción:

[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

Conclusión

Las listas por comprensión ofrecen una forma potente y concisa de generar listas en Python. Pueden simplificar el código y hacerlo más legible al reemplazar varias líneas de código de bucle con una sola línea de listas por comprensión. Practique el uso de listas por comprensión para familiarizarse con su sintaxis y capacidades.