Conjuntos
Unicidad + pertenencia rápida
Por qué importa
Los conjuntos eliminan duplicados y ofrecen comprobaciones de pertenencia O(1) en promedio: perfectos para muchos problemas de estructuras de datos y algoritmos.
La idea
Un conjunto es una bolsa de elementos únicos y hashables, sin ningún orden. Operaciones de la escuela: | unión, & intersección, - diferencia, ^ diferencia simétrica.
Pruébalo
Eliminación de duplicados y pertenencia:
nums = [1, 1, 2, 3, 3, 5, 5, 7]
unique = set(nums)
print(unique, "size:", len(unique))
print(5 in unique) # O(1) average
print(9 in unique)
Álgebra de conjuntos:
a = {"red", "green", "blue", "yellow"}
b = {"green", "blue", "purple"}
print("union ", a | b)
print("intersection ", a & b)
print("a only ", a - b)
print("xor ", a ^ b)
Un problema clásico de entrevista: el primer carácter que se repite:
def first_repeat(s):
seen = set()
for ch in s:
if ch in seen:
return ch
seen.add(ch)
return None
for w in ["abcdea", "abcde", "swiss"]:
print(w, "->", first_repeat(w))
Métodos principales
| Método | Qué hace | Ejemplo |
| --- | --- | --- |
| add(x) | agregar uno | st.add(3) |
| update(iter) | agregar varios | st.update([4,5]) |
| remove(x) | quitar; error si no existe | st.remove(2) |
| discard(x) | quitar de forma segura | st.discard(2) |
| pop() | quitar uno arbitrario | st.pop() |
| clear() | quitar todo | st.clear() |
| copy() | copia superficial | st.copy() |
Comprobaciones de subconjunto / superconjunto
A <= B # subset
A < B # proper subset
A >= B # superset
Comprensión de conjuntos y frozenset
squares = {x*x for x in range(5)} # set comprehension
fs = frozenset([1, 2, 3]) # immutable, hashable set
Verificación rápida
- P: ¿
{}es un conjunto? R: No, es un diccionario. Usaset()para un conjunto vacío.
Mini ejercicios
- Cuenta las palabras únicas en una oración.
- Comprueba si una lista tiene duplicados.
Buenas y malas prácticas
- Usa conjuntos para las comprobaciones de pertenencia.
- No dependas del orden de un conjunto.
Profundizando — vistazo de complejidad
- Pertenencia: ~O(1) en promedio
- Álgebra de conjuntos (
|,&,-,^): O(n)
Errores comunes
- Error: Usar
{}para un conjunto vacío. Solución: Usaset(). - Error: Esperar orden en un conjunto. Solución: Usa una lista si el orden importa.
Conclusiones clave
- Los conjuntos almacenan elementos únicos y hashables; la búsqueda es O(1) en promedio.
- El álgebra de conjuntos (
|,&,-,^) es fluida y rápida. - "¿Ya he visto esto antes?" → recurre a un conjunto.
frozensetes la variante inmutable y hashable: puede ser clave de diccionario.