Volver al curso

Python Desde Cero

leccion
12 / 21
beginner
20 horas
Estructuras de Datos

Sets y Operaciones de Conjuntos

Lectura
20 min~3 min lectura

Sets y Operaciones de Conjuntos

Un set (conjunto) es una coleccion desordenada de elementos unicos. Si intentas agregar el mismo elemento dos veces, lo ignora. Son ideales para eliminar duplicados y realizar operaciones matematicas de conjuntos.

Crear sets
frutas = {'manzana', 'banana', 'cereza', 'manzana'}  # Duplicados eliminados
print(frutas)
print(type(frutas))
print(len(frutas))  # 3

numeros = set([1, 2, 3, 2, 1, 4])
print(numeros)  # {1, 2, 3, 4}

letras = set('programacion')
print(letras)

set_vacio = set()  # NO usar {}, eso crea un dict
Agregar y eliminar elementos
habilidades = {'Python', 'SQL', 'Excel'}

habilidades.add('JavaScript')
habilidades.update(['Docker', 'Git', 'Python'])  # Python ya existe

habilidades.remove('Excel')  # Error si no existe
habilidades.discard('Perl')  # Sin error si no existe

eliminado = habilidades.pop()
print(f'Eliminado: {eliminado}')
Verificar membresida
lenguajes = {'Python', 'JavaScript', 'Java', 'Go'}

print('Python' in lenguajes)   # True
print('Rust' in lenguajes)     # False
print('Rust' not in lenguajes) # True
Operaciones matematicas de conjuntos
frontend = {'HTML', 'CSS', 'JavaScript', 'TypeScript'}
backend = {'Python', 'JavaScript', 'Java', 'SQL'}

# Union: todos los elementos
todos = frontend | backend
print(todos)

# Interseccion: solo en ambos
en_ambos = frontend & backend
print(en_ambos)  # {'JavaScript'}

# Diferencia: en el primero pero no en el segundo
solo_frontend = frontend - backend
print(solo_frontend)

# Diferencia simetrica: en uno u otro pero no en ambos
solo_en_uno = frontend ^ backend
print(solo_en_uno)
Comparaciones de conjuntos
a = {1, 2, 3, 4, 5}
b = {2, 3, 4}
c = {6, 7, 8}

print(b.issubset(a))    # True: b es subconjunto de a
print(a.issuperset(b))  # True: a contiene a b
print(a.isdisjoint(c))  # True: no comparten elementos
print(a.isdisjoint(b))  # False
Caso real: Analisis de audiencias
blog = {'user1', 'user2', 'user3', 'user4', 'user5'}
tienda = {'user3', 'user4', 'user6', 'user7'}
soporte = {'user2', 'user5', 'user8', 'user9'}

total = blog | tienda | soporte
print(f'Total usuarios unicos: {len(total)}')

interes_compra = blog & tienda
print(f'Blog y tienda: {interes_compra}')

solo_blog = blog - tienda
print(f'Solo blog: {solo_blog}')

necesitan_atencion = soporte - tienda
print(f'Soporte sin comprar: {necesitan_atencion}')
Eliminar duplicados de una lista
emails = [
    '[email protected]',
    '[email protected]',
    '[email protected]',      # duplicado
    '[email protected]',
    '[email protected]',  # duplicado
]

emails_unicos = list(set(emails))
print(f'Original: {len(emails)}')
print(f'Unicos: {len(emails_unicos)}')
Sets vs Listas vs Diccionarios
Estructura Usar cuando...
Lista El orden importa, permites duplicados
Set Solo te importa unicidad u operaciones de conjuntos
Diccionario Necesitas asociar claves con valores
💡 Concepto Clave

Revisemos los puntos más importantes de esta lección antes de continuar.

Resumen

  • Los sets guardan elementos unicos sin orden garantizado
  • Eficientes para verificar si un elemento existe
  • Permiten union, interseccion, diferencia y diferencia simetrica
  • Ideales para eliminar duplicados de listas

En la proxima leccion comprension de listas: la forma pythonica de crear colecciones.

🧠 Pon a prueba tu conocimiento
¿Cuál es el aspecto más importante que aprendiste en esta lección?
  • Comprendo el concepto principal y puedo explicarlo con mis palabras
  • Entiendo cómo aplicarlo en mi situación específica
  • Necesito repasar algunas partes antes de continuar
  • Quiero ver más ejemplos prácticos del tema
✅ ¡Excelente! Continúa con la siguiente lección para profundizar más.