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 setsfrutas = {'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.