Aprende Python · lección gratuita
Un conjunto (set) es una colección desordenada y sin elementos duplicados. Es la estructura ideal cuando solo te importa si un valor está presente o no, y cuando necesitas eliminar repetidos o comparar grupos de datos. A diferencia de las listas, los conjuntos no tienen índice y guardan cada valor una sola vez.
{} separando los elementos por comas, o con la función set().{1, 1, 2} se convierte en {1, 2}.in, y es muy rápida: 3 in mi_set.union() o | combina dos conjuntos sin repetir nada.intersection() o & devuelve los elementos comunes a ambos.difference() o - devuelve lo que está en el primero pero no en el segundo.Un conjunto se escribe con llaves, igual que un diccionario, pero sin pares clave-valor: simplemente valores sueltos. Como no hay duplicados, los conjuntos son perfectos para responder preguntas como "¿cuántos valores distintos hay?". Ojo con un detalle importante: el conjunto vacío se crea con set() y NO con {}, porque {} crea un diccionario vacío.
Los elementos de un conjunto no están ordenados ni tienen posición, así que no puedes hacer mi_set[0]. Lo que sí puedes hacer es preguntar si un valor pertenece con in, recorrerlo con un bucle, o medir su tamaño con len(). Para obtener una salida predecible al imprimir (los conjuntos no garantizan el orden), conviene convertirlos con sorted(), que devuelve una lista ordenada.
numeros = {3, 1, 2, 2, 3} # los duplicados desaparecen
print(sorted(numeros)) # [1, 2, 3]
print(2 in numeros) # True
print(len(numeros)) # 3
Las operaciones entre conjuntos son su gran fortaleza. Imagina dos grupos de personas: con & obtienes quiénes están en ambos, con | obtienes a todos sin repetir, y con - obtienes quiénes están en el primero pero no en el segundo. Cada operación tiene un método equivalente (intersection, union, difference) por si prefieres nombres en lugar de símbolos.
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# Unión: todos los elementos, sin repetir
print(sorted(a | b)) # [1, 2, 3, 4, 5, 6]
print(sorted(a.union(b))) # igual que arriba
# Intersección: solo los comunes
print(sorted(a & b)) # [3, 4]
print(sorted(a.intersection(b)))# [3, 4]
# Diferencia: en a pero no en b
print(sorted(a - b)) # [1, 2]
print(sorted(a.difference(b))) # [1, 2]
# Eliminar duplicados de una lista
lista = [5, 5, 1, 1, 9]
print(sorted(set(lista))) # [1, 5, 9]
💡 Para imprimir conjuntos de forma predecible, envuélvelos ensorted(). Como el orden interno de unsetno está garantizado,sorted()te da siempre la misma salida ordenada.
| Acción | Sintaxis | Ejemplo | ||
|---|---|---|---|---|
| Crear conjunto | {a, b, c} | {1, 2, 3} | ||
| Conjunto vacío | set() | set() | ||
| Quitar duplicados | set(lista) | set([1,1,2]) → {1, 2} | ||
| Pertenencia | valor in s | 2 in s | ||
| Tamaño | len(s) | len({1,2}) → 2 | ||
| Unión | `a \ | b / a.union(b)` | `{1,2} \ | {2,3}` |
| Intersección | a & b / a.intersection(b) | {1,2} & {2,3} | ||
| Diferencia | a - b / a.difference(b) | {1,2} - {2,3} | ||
| Ordenar para imprimir | sorted(s) | sorted({3,1,2}) |
---