Comprensiones en Python

 

Comprensiones en Python

Las comprensiones son una forma concisa y elegante de crear listas, diccionarios y conjuntos en Python. Te voy a explicar cada una con ejemplos simples.

1. Comprensión de Listas

Crea una nueva lista aplicando una expresión a cada elemento de una secuencia.

Sintaxis básica:

python
[nueva_expresion for elemento in secuencia]

Ejemplos:

Sin comprensión:

python
# Crear una lista con los cuadrados de los números del 1 al 5
cuadrados = []
for i in range(1, 6):
    cuadrados.append(i * i)
print(cuadrados)  # [1, 4, 9, 16, 25]

Con comprensión:

python
cuadrados = [i * i for i in range(1, 6)]
print(cuadrados)  # [1, 4, 9, 16, 25]

Más ejemplos:

python
# Convertir a mayúsculas
nombres = ["ana", "luis", "maria"]
mayusculas = [nombre.upper() for nombre in nombres]
print(mayusculas)  # ['ANA', 'LUIS', 'MARIA']

# Extraer las primeras letras
primeras_letras = [nombre[0] for nombre in nombres]
print(primeras_letras)  # ['a', 'l', 'm']

2. Comprensión con Condición

Puedes filtrar elementos con una condición.

Sintaxis:

python
[nueva_expresion for elemento in secuencia if condicion]

Ejemplos:

python
# Solo números pares al cuadrado
pares_cuadrados = [i * i for i in range(1, 11) if i % 2 == 0]
print(pares_cuadrados)  # [4, 16, 36, 64, 100]

# Nombres que empiezan con 'a'
nombres = ["ana", "luis", "maria", "antonio", "lucia"]
nombres_con_a = [nombre for nombre in nombres if nombre.startswith('a')]
print(nombres_con_a)  # ['ana', 'antonio']

3. Comprensión de Diccionarios

Crea diccionarios de forma similar.

Sintaxis:

python
{clave: valor for elemento in secuencia}

Ejemplos:

python
# Crear diccionario con número y su cuadrado
cuadrados_dict = {i: i*i for i in range(1, 6)}
print(cuadrados_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# Invertir clave y valor en un diccionario
original = {'a': 1, 'b': 2, 'c': 3}
invertido = {valor: clave for clave, valor in original.items()}
print(invertido)  # {1: 'a', 2: 'b', 3: 'c'}

4. Comprensión de Conjuntos

Crea conjuntos (sin elementos duplicados).

Sintaxis:

python
{nueva_expresion for elemento in secuencia}

Ejemplos:

python
# Crear conjunto con las longitudes de palabras
palabras = ["sol", "luna", "estrella", "sol", "mar"]
longitudes = {len(palabra) for palabra in palabras}
print(longitudes)  # {3, 4, 8} - Nota: elimina duplicados

# Convertir a mayúsculas y eliminar duplicados
nombres = ["ana", "luis", "ana", "maria"]
unicos = {nombre.upper() for nombre in nombres}
print(unicos)  # {'ANA', 'LUIS', 'MARIA'}

Ejemplo Práctico Combinado

python
# Procesar una lista de estudiantes
estudiantes = [
    {"nombre": "Ana", "edad": 20, "nota": 85},
    {"nombre": "Luis", "edad": 22, "nota": 92},
    {"nombre": "Maria", "edad": 19, "nota": 78},
    {"nombre": "Carlos", "edad": 21, "nota": 88}
]

# Nombres de estudiantes con nota mayor a 80
aprobados = [est["nombre"] for est in estudiantes if est["nota"] > 80]
print(aprobados)  # ['Ana', 'Luis', 'Carlos']

# Diccionario con nombre y estado (aprobado/reprobado)
estados = {est["nombre"]: "Aprobado" if est["nota"] >= 80 else "Reprobado" 
           for est in estudiantes}
print(estados)  # {'Ana': 'Aprobado', 'Luis': 'Aprobado', 'Maria': 'Reprobado', 'Carlos': 'Aprobado'}

Ventajas de las Comprensiones:

  • Más legibles (una vez que te acostumbras)

  • Más concisas (menos código)

  • Más eficientes en muchos casos

¡Las comprensiones hacen tu código más "pythónico" y elegante!

Comentarios

Entradas populares de este blog

¿Qué es un Closure?

Calculadora de edad

Funciones en Python: con y sin paréntesis