Ejercicio 03 — Dada una lista con duplicados, devuelve los elementos unicos usando…
Dificultad: verde · Módulo 07 (Diccionarios y sets)
Enunciado
Dada una lista con duplicados, devuelve los elementos unicos usando set
Cómo se resuelve
Eliminar duplicados de una lista es el uso más directo del set: un conjunto no admite elementos repetidos, así que convertir la lista en set los borra solos.
unicos = set(numeros)— al construir un conjunto a partir de la lista, Python descarta automáticamente las repeticiones. De[3, 1, 2, 5, 1, 3, 2, 5, 5, 1]quedan solo{1, 2, 3, 5}.- Funciona porque el
setusa hashing igual que el diccionario: antes de meter un elemento calcula su hash y comprueba en tiempo constante si ya está. Si está, no lo añade. Esa comprobación O(1) por elemento es lo que hace todo el proceso eficiente, sin comparar cada número con todos los anteriores. sorted(unicos)— unsetno tiene orden garantizado, así que para mostrarlo de forma legible lo convertimos en una lista ordenada.sortedacepta el set y devuelve una lista.len(numeros)frente alen(unicos)— comparar ambos tamaños nos dice cuántos duplicados había: 10 elementos originales, 4 únicos.
Trampa habitual: esperar que el set conserve el orden de aparición original. No lo hace; su orden es interno e impredecible. Si necesitas quitar duplicados manteniendo el orden, la vía es dict.fromkeys(numeros), que sí respeta el primer orden de inserción.
Para practicar — cópialo y complétalo
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
# Curso de Python — Modulo 07: Diccionarios y Sets
# Ejercicio 03 — PRACTICA (rellena los TODO)
# Enunciado: Dada una lista con duplicados, devuelve los elementos unicos usando set
# Dificultad: verde
# Ejecutar: python3 ej03_practica.py
# Lista con duplicados (no la modifiques)
numeros = [3, 1, 2, 5, 1, 3, 2, 5, 5, 1]
# TODO: convierte la lista "numeros" a un set y guardalo en "unicos"
unicos = None
# TODO: imprime la lista original con f-string
# TODO: imprime los unicos ORDENADOS con f-string
# pista: sorted(unicos) devuelve una lista ordenada a partir del set
# TODO: imprime cuantos elementos totales hay vs cuantos unicosSolución — cópiala y ejecútala
# Curso de Python — Modulo 07: Diccionarios y Sets
# Ejercicio 03 — MODELO (resuelto)
# Enunciado: Dada una lista con duplicados, devuelve los elementos unicos usando set
# Dificultad: verde
# Ejecutar: python3 ej03_modelo.py
# Lista con duplicados (hardcoded)
numeros = [3, 1, 2, 5, 1, 3, 2, 5, 5, 1]
# set() elimina duplicados automaticamente — O(1) por insercion
unicos = set(numeros)
print(f"Lista original: {numeros}")
print(f"Unicos: {sorted(unicos)}") # sorted convierte el set a lista ordenada
print(f"Total elementos: {len(numeros)} -> {len(unicos)} unicos")Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.