Python comprehensions: listas, sets y diccionarios

Clase 29 de 49Curso Práctico de Python: Creación de un CRUD

Resumen

Domina las comprehensions en Python para crear listas, diccionarios y sets de forma clara, compacta y eficiente. Aprende a filtrar números pares, unir listas con zip y eliminar duplicados con sets, aprovechando funciones globales como range y buenas prácticas de legibilidad. Además, compara rendimiento con time o timeit cuando lo necesites.

¿Qué son las comprehensions y por qué mejoran tu código?

Las comprehensions son un constructo para generar una secuencia a partir de otra secuencia. Permiten aplicar transformaciones y filtros de manera concisa y legible. En la práctica, reemplazan muchos for loops con una sola expresión y Python optimiza su ejecución internamente.

  • Tres tipos: list comprehension, dictionary comprehension y set comprehension.
  • Sintaxis por tipo: listas con corchetes []; diccionarios con llaves y pares clave: valor; sets con llaves y un solo valor.
  • Usos reales: filtrar números pares. Transformar elementos (por ejemplo, añadir texto). Unir listas para construir diccionarios. Eliminar duplicados con sets.
  • Rendimiento: si quieres comparar con un for loop, usa time o timeit.

Habilidades clave: legibilidad en nombres de variables. Uso de operadores como el módulo (%). Aprovechar funciones globales como range y zip. Entender que la condición en una comprehension es opcional.

¿Cómo filtrar y transformar listas con list comprehension?

Para practicar, se parte de una lista de números creada con range: al usar range(100), los valores son del 0 al 99. El objetivo: quedarnos solo con los pares mediante una condición.

# Generar números del 0 al 99
lista_numeros = list(range(100))

# Filtrar pares con list comprehension
pares = [numero for numero in lista_numeros if numero % 2 == 0]

print(pares)
  • Transformación y filtro en una línea.
  • Condición opcional: if numero % 2 == 0 filtra solo pares.
  • Legibilidad importa: usa nombres descriptivos como numero.

¿Cómo aplicar un filtro condicional y mantener legibilidad?

La estructura general es: [expresion for elemento in secuencia if condicion]. Aquí se aplica el operador módulo para verificar divisibilidad entre dos. Nombrar bien las variables facilita entender la intención y mantener el código claro.

¿Cómo crear diccionarios y sets con dictionary y set comprehension?

Más allá de listas, también puedes construir diccionarios y sets. Con diccionarios, une dos listas con zip. Con sets, elimina duplicados aprovechando que no aceptan repetidos.

¿Cómo unir dos listas con zip en un diccionario?

Se recomienda usar UID en lugar de ID (por ser palabra reservada) al nombrar identificadores. Con zip, emparejas IDs y nombres, y los conviertes en diccionario con una dictionary comprehension.

student_uid = [1, 2, 3]
students = ["Juan", "José", "Larsen"]

# Unir listas con zip y crear diccionario
students_with_uid = {uid: student for uid, student in zip(student_uid, students)}

print(students_with_uid)
# {1: 'Juan', 2: 'José', 3: 'Larsen'}
  • Clave: uid. Valor: student.
  • zip recorre ambas listas en paralelo.
  • La condición es opcional: úsala solo si necesitas filtrar pares clave-valor.

¿Cómo eliminar duplicados con un set comprehension?

Primero, genera números aleatorios con el módulo random usando un for loop y append. Luego, crea un set con una set comprehension para eliminar repetidos.

import random

# Generar 10 números aleatorios entre 1 y 3
random_numbers = []
for i in range(10):
    random_numbers.append(random.randint(1, 3))

# Eliminar duplicados con set comprehension
non_repeated = {number for number in random_numbers}

print(random_numbers)
print(non_repeated)  # contiene solo valores únicos
  • Un set no admite duplicados: al agregar, elimina repeticiones.
  • Patrón útil: lista con posibles repetidos → set para valores únicos.
  • Combina con filtros si necesitas restringir valores.

¿Tienes otro caso de uso para comprehensions en tu día a día? Cuéntalo en los comentarios y probemos variantes juntos.