"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Comprender la comprensión de listas en Python

Comprender la comprensión de listas en Python

Publicado el 2024-08-27
Navegar:548

Understanding List Comprehensions in Python

Las listas por comprensión son un método potente y eficiente para crear listas en Python.

Ofrecen una forma concisa y legible de generar listas basadas en iterables existentes.

En el artículo, exploraré los matices de la comprensión de listas, sus beneficios sobre los bucles tradicionales y varias aplicaciones prácticas.


¿Qué son las listas por comprensión?

Las listas por comprensión son una forma sintácticamente compacta de crear listas combinando bucles y lógica condicional en una sola línea de código.

Esto da como resultado una forma más legible y expresiva de generar listas, lo que facilita la comprensión de la intención del código de un vistazo.


Estructura y ejemplos

La estructura básica de una lista por comprensión es la siguiente:

[expression for item in iterable if condition]

Desglosemos los componentes de esta estructura:

  • expresión: Este es el valor que se agregará a la nueva lista para cada iteración.
  • para elemento en iterable: Esta es la construcción de bucle que itera sobre cada elemento en el iterable (por ejemplo, lista, tupla, conjunto, diccionario o generador).
  • if condición: Esta es una declaración condicional opcional que filtra los elementos que se incluirán en la nueva lista.

Ejemplos:

Comprensión básica de listas:

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  

# Output: [1, 4, 9, 16, 25]

Este ejemplo utiliza la comprensión de listas para crear una nueva lista de cuadrados a partir de una lista de números existente.

Comprensión de lista con una condición:

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  

# Output: [4, 16]

Este ejemplo filtra los números para incluir solo números pares, que luego se elevan al cuadrado, lo que demuestra el uso de una condición if en una lista por comprensión.


Beneficios de la comprensión de listas sobre los bucles tradicionales

La comprensión de listas ofrece varias ventajas sobre los bucles tradicionales:

  • Brevedad: las listas por comprensión son más concisas y fáciles de leer que los bucles tradicionales, lo que hace que su código sea más fácil de mantener y de entender.
  • Rendimiento: la comprensión de listas suele ser más rápida que los bucles tradicionales porque están optimizadas para crear listas.
  • Legibilidad: la intención de una lista de comprensión es más clara que la de un bucle tradicional, lo que facilita que otros comprendan su código.

Aplicaciones prácticas

Las listas por comprensión se pueden utilizar de varias maneras para manipular y procesar datos.

A continuación se muestran algunos casos de uso comunes:
Listas de filtrado:

words = ["apple", "banana", "cherry", "date"]
short_words = [word for word in words if len(word) 



Este ejemplo filtra una lista de palabras para incluir solo aquellas con 5 caracteres o menos.

Transformación de listas:

temperatures_celsius = [0, 20, 30, 40]
temperatures_fahrenheit = [(temp * 9/5)   32 for temp in temperatures_celsius]
print(temperatures_fahrenheit)  

# Output: [32.0, 68.0, 86.0, 104.0]

Este ejemplo convierte una lista de temperaturas de Celsius a Fahrenheit.

Comprensiones de listas anidadas:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  

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

Este ejemplo aplana una lista 2D (matriz) en una lista 1D usando listas por comprensión anidadas.

Creación de listas de tuplas:

pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs) 

# Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

Este ejemplo genera una lista de todos los posibles pares (tuplas) de números de dos rangos.

Eliminación de duplicados:

list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set([x for x in list_with_duplicates]))
print(unique_list)  

# Output: [1, 2, 3, 4, 5]

Este ejemplo elimina duplicados de una lista convirtiéndola en un conjunto y volviendo a convertirla en una lista.


Temas más avanzados

Exploremos ahora algunos temas más avanzados relacionados con las variaciones de comprensión de listas.

Expresiones del generador
Las expresiones generadoras son similares a las listas por comprensión, pero generan un iterable en lugar de una lista.

Esto puede ser más eficiente en cuanto a memoria cuando se trabaja con conjuntos de datos grandes, ya que los elementos se generan sobre la marcha en lugar de almacenarse en la memoria todos a la vez.

numbers = [1, 2, 3, 4, 5]
squares_generator = (x**2 for x in numbers)

for square in squares_generator:
    print(square)

# Output
# 1
# 4
# 9
# 16
# 25

Diccionario y conjuntos de comprensión
Python también admite diccionarios y conjuntos por comprensión, que le permiten crear diccionarios y conjuntos de manera concisa, similar a las listas por comprensión.

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x**2 for x in numbers}
print(squares_dict)  

# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}



# Set comprehension
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_set = {x for x in list_with_duplicates}
print(unique_set)  

# Output: {1, 2, 3, 4, 5}


Conclusión

Las listas por comprensión son una herramienta poderosa y versátil en Python que le permite crear listas de manera concisa y legible.

Pueden simplificar su código, mejorar el rendimiento y facilitar la manipulación y el procesamiento de datos.

Al dominar la comprensión de listas y sus funciones avanzadas, puedes escribir código Python más eficiente y limpio.

Declaración de liberación Este artículo se reproduce en: https://dev.to/devasservice/understanding-list-comprehensions-in-python-1b2p?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3