Comprensiones de Python: enumerar, dictar y establecer comprensiones

Escribe Python más limpio y rápido. Lista maestra, diccionario y conjuntos por comprensión con ejemplos prácticos, condiciones de filtrado y bucles anidados.

Pruébelo en el editor

Descripción general

Las comprensiones son una de las características más queridas de Python y ofrecen una sintaxis concisa y muy legible para crear nuevas colecciones (listas, diccionarios y conjuntos) a partir de iterables existentes. En lugar de escribir bucles "for" de varias líneas y agregar elementos manualmente, las comprensiones le permiten realizar la misma transformación, filtrado y asignación en una única y expresiva línea de código.

Las listas por comprensión son la variante más común, estructuradas como "[expresión para elemento en condición iterable if]". Debajo del capó, Python optimiza las comprensiones para que se ejecuten a una velocidad cercana a C, a menudo superando los bucles "for" manuales equivalentes porque el bucle es manejado por el intérprete subyacente. Son ideales para transformaciones rápidas, como convertir una lista de temperaturas Celsius a Fahrenheit o extraer claves específicas de una lista de registros de usuarios.

Más allá de las listas, Python admite diccionarios y conjuntos por comprensión. La comprensión de un diccionario, definida con llaves y pares clave-valor (por ejemplo, `{clave: valor para x en iterable}`), es muy útil para invertir pares de mapeo o analizar metadatos. Las comprensiones de conjuntos generan colecciones únicas al eliminar automáticamente los duplicados. Si bien las comprensiones son increíblemente poderosas, los desarrolladores deben evitar complicarlas demasiado; Si una comprensión requiere bucles anidados o condiciones complejas, un bucle "for" tradicional suele ser más fácil de leer y mantener.

Código y salida de ejecución

Demuestra transformaciones de listas, filtrado condicional y creación de un diccionario a partir de entradas de mapeo.

comprehensions.py
Pruébelo en el editor
numbers = [1, 2, 3, 4, 5, 6]

# List comprehension with filter (even squares)
even_squares = [x**2 for x in numbers if x % 2 == 0]

# Set comprehension (unique word lengths)
words = ["python", "java", "ruby", "python"]
word_lengths = {len(w) for w in words}

# Dictionary comprehension (number: square)
square_map = {n: n**2 for n in numbers[:4]}

print(f"Even squares: {even_squares}")
print(f"Unique lengths: {word_lengths}")
print(f"Square mapping: {square_map}")
Salida terminal
Even squares: [4, 16, 36]
Unique lengths: {4, 6}
Square mapping: {1: 1, 2: 4, 3: 9, 4: 16}

Implementación paso a paso

  • Filtrar valores vacíos o datos no válidos de los registros
  • Mapeo de cargas útiles de API en mapeos de datos clave-valor
  • Formatear rápidamente filas de bases de datos en listas simples

Preguntas frecuentes

¿Las comprensiones son más rápidas que los bucles normales?

Sí, en la mayoría de los casos son más rápidos porque la iteración se maneja mediante código C optimizado dentro del intérprete de Python.

¿Debo usar siempre comprensiones?

No. La legibilidad del código es la prioridad de Python. Si la comprensión tiene lógica anidada o tiene más de una o dos líneas, se prefiere un bucle tradicional.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.