PyQuiz 40 – Set comprehension en Python

El reto
nums = [1, 2, 2, 3, 3, 3]
unicos = {x for x in nums}
print(len(unicos))¿Cuál es el resultado?
- a) 3
- b) 6
- c) Error
Piensa tu respuesta antes de seguir leyendo…
Concepto: Set comprehension
Una comprensión de conjunto (set comprehension) usa la sintaxis {expresion for variable in iterable} (con llaves pero sin los dos puntos del dict). Al igual que los sets normales, elimina automáticamente los duplicados, por lo que aunque el iterable tenga valores repetidos, el conjunto resultante solo contiene valores únicos.
Esta propiedad hace que las comprensiones de conjunto sean ideales para obtener los elementos únicos de una colección o para contar cuántos valores distintos hay.
letras = {c for c in 'mississippi'}
print(letras) # {'m', 'i', 's', 'p'} — sin orden garantizado
print(len(letras)) # 4
# Equivalente con set():
letras = set('mississippi') # mismo resultadoPaso a paso
nums = [1, 2, 2, 3, 3, 3]— Lista con 6 elementos, pero solo 3 valores únicos:1,2y3.{x for x in nums}— Se crea una comprensión de conjunto. Itera sobre todos los elementos denums.- Durante la iteración:
1se añade.2se añade. El segundo2se ignora (ya existe).3se añade. Los dos3adicionales se ignoran. unicos = {1, 2, 3}— El conjunto resultante tiene solo 3 elementos únicos.len(unicos)— Cuenta los elementos del conjunto:3.print(len(unicos))— Se imprime3.
📥 Llévate el cheatsheet de Python (gratis)
PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.
Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.
Solución
Respuesta correcta: A) 3
Un set elimina duplicados. {1, 2, 3} tiene 3 elementos.
Sabías que…
Los sets también soportan operaciones matemáticas de conjuntos, que son muy eficientes y expresivas:
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a & b) # {3, 4} — intersección
print(a | b) # {1,2,3,4,5,6} — unión
print(a - b) # {1, 2} — diferencia
print(a ^ b) # {1,2,5,6} — diferencia simétrica
# Caso práctico: encontrar elementos únicos de dos listas
lista1 = [1, 2, 2, 3]
lista2 = [3, 4, 4, 5]
unicos_totales = len(set(lista1) | set(lista2)) # 5Prueba tú mismo
¿Cuántos elementos tiene el conjunto {x % 3 for x in range(10)}? Razona qué valores genera x % 3 para cada número del 0 al 9.
Más PyQuizzes en elpythonista.com/pyquizzes
Tutorial relacionado: Conjuntos en Python
¿Quieres aprender Python en orden, no a saltos?
Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
