PyQuiz 40 - Set comprehension en Python | Quiz interactivo

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 resultado

Paso a paso

  1. nums = [1, 2, 2, 3, 3, 3] — Lista con 6 elementos, pero solo 3 valores únicos: 1, 2 y 3.
  2. {x for x in nums} — Se crea una comprensión de conjunto. Itera sobre todos los elementos de nums.
  3. Durante la iteración: 1 se añade. 2 se añade. El segundo 2 se ignora (ya existe). 3 se añade. Los dos 3 adicionales se ignoran.
  4. unicos = {1, 2, 3} — El conjunto resultante tiene solo 3 elementos únicos.
  5. len(unicos) — Cuenta los elementos del conjunto: 3.
  6. print(len(unicos)) — Se imprime 3.

📥 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))  # 5

Prueba 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.

Ver el curso completo →

37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía

Compartir