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:
[nueva_expresion for elemento in secuencia]Ejemplos:
Sin comprensión:
# 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:
cuadrados = [i * i for i in range(1, 6)]
print(cuadrados) # [1, 4, 9, 16, 25]Más ejemplos:
# 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:
[nueva_expresion for elemento in secuencia if condicion]Ejemplos:
# 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:
{clave: valor for elemento in secuencia}Ejemplos:
# 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:
{nueva_expresion for elemento in secuencia}Ejemplos:
# 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
# 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
Publicar un comentario