Los sets en Python son una estructura de datos similar a las listas o tuplas, pero con propiedades únicas que los hacen ideales para trabajar con colecciones no repetidas de elementos. Están basados en la teoría de conjuntos de las matemáticas, lo que permite realizar operaciones como unión, intersección y diferencia.
Existen dos formas principales:
Usando la función set() con un iterable como una
lista:
numeros = set([4, 5, 6, 8, 8, 4])
print(numeros) # {8, 4, 5, 6}
Utilizando llaves {} directamente (no confundir con
diccionarios, que tienen pares clave:valor):
colores = {"rojo", "verde", "azul"}
print(colores) # {'verde', 'azul', 'rojo'}
Nota: Si usas {} sin
elementos, Python lo interpreta como un diccionario vacío. Para crear un set vacío, se
debe usar set().
for color in colores:
print(color)
print("rojo" in colores) # True
print("negro" in colores) # False
print(len(colores)) # 3
# colores[0] = "amarillo" → TypeError
set_invalido = {1, 2, [3, 4]} # TypeError: unhashable type: 'list'
Une dos sets (sin duplicados):
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # {1, 2, 3, 4, 5}
print(a.union(b)) # {1, 2, 3, 4, 5}
Elementos comunes entre dos sets:
print(a & b) # {3}
print(a.intersection(b)) # {3}
Elementos que están en a pero no
en b:
print(a - b) # {1, 2}
print(a.difference(b)) # {1, 2}
Elementos que están en uno u otro, pero no en ambos:
print(a ^ b) # {1, 2, 4, 5}
print(a.symmetric_difference(b)) # {1, 2, 4, 5}
Agrega un elemento al set:
colores.add("amarillo")
print(colores)
Elimina un elemento. Lanza error si no existe:
colores.remove("rojo") # Funciona
# colores.remove("negro") # KeyError
Elimina un elemento, sin error si no existe:
colores.discard("negro") # No lanza error
elemento = colores.pop()
print("Elemento eliminado:", elemento)
Elimina todos los elementos:
colores.clear()
print(colores) # set()
Los sets son ideales cuando: