Los conjuntos en Python son colecciones no ordenadas de elementos únicos. Esto significa que los valores duplicados se eliminan automáticamente y el orden en que se agregan los elementos no afecta a cómo se almacenan o recuperan. Los conjuntos son mutables (cambiables) por defecto, a menos que se utilice el tipo frozenset
, que es inmutable.
Los conjuntos son particularmente útiles para tareas que requieren una prueba de pertenencia eficiente (comprobar si existe un elemento), eliminar duplicados de una lista y realizar operaciones de conjuntos como unión, intersección y diferencia.
Tabla de contenido
- Creando conjuntos
- Añadiendo y actualizando elementos
- Eliminando elementos
- Operaciones de conjuntos
- Métodos de conjuntos
- Otras operaciones de conjuntos
- Funciones integradas con conjuntos
- Conjuntos congelados (frozensets)
1. Creando conjuntos
Puedes crear conjuntos usando llaves {}
o el constructor set()
. Ten en cuenta que un conjunto vacío debe crearse usando set()
; {}
crea un diccionario vacío.
# Usando llaves
my_set = {1, 2, 3, 4, 5}
print(my_set) # Salida: {1, 2, 3, 4, 5}
# Usando el constructor set()
another_set = set([6, 7, 8, 8]) # Los duplicados se eliminan automáticamente
print(another_set) # Salida: {8, 6, 7}
empty_set = set()
print(empty_set) # Salida: set()
Recuerda que los conjuntos no están ordenados, por lo que el orden de salida puede diferir del orden de entrada.
2. Añadiendo y actualizando elementos
Usa el método add()
para añadir un solo elemento y el método update()
para añadir varios elementos.
my_set = {1, 2, 3}
my_set.add(4)
print(my_set) # Salida: {1, 2, 3, 4}
my_set.update([5, 6, 7])
print(my_set) # Salida: {1, 2, 3, 4, 5, 6, 7}
my_set.update({8, 9}, (10,)) # Actualizar con conjunto y tupla
print(my_set) # Salida: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
3. Eliminando elementos
Varios métodos permiten la eliminación de elementos. remove()
lanza un KeyError
si el elemento no se encuentra, mientras que discard()
no lo hace.
my_set = {1, 2, 3, 4, 5}
my_set.remove(3) # Lanza KeyError si el elemento no se encuentra
print(my_set) # Salida: {1, 2, 4, 5}
my_set.discard(6) # No lanza un error si el elemento no se encuentra
print(my_set) # Salida: {1, 2, 4, 5}
removed_element = my_set.pop() # Elimina y devuelve un elemento arbitrario
print(removed_element) # Salida: (un elemento aleatorio)
print(my_set)
my_set.clear() # Elimina todos los elementos
print(my_set) # Salida: set()
4. Operaciones de conjuntos
Los conjuntos admiten operaciones de conjuntos matemáticas estándar:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# Unión: combina elementos de ambos conjuntos
union_set = set1 | set2 # o set1.union(set2)
print(union_set) # Salida: {1, 2, 3, 4, 5}
# Intersección: elementos presentes en ambos conjuntos
intersection_set = set1 & set2 # o set1.intersection(set2)
print(intersection_set) # Salida: {3}
# Diferencia: elementos en set1 pero no en set2
difference_set = set1 - set2 # o set1.difference(set2)
print(difference_set) # Salida: {1, 2}
# Diferencia simétrica: elementos en set1 o set2, pero no en ambos
symmetric_difference_set = set1 ^ set2 # o set1.symmetric_difference(set2)
print(symmetric_difference_set) # Salida: {1, 2, 4, 5}
5. Métodos de conjuntos
Python ofrece muchos métodos integrados para la manipulación de conjuntos:
my_set = {1, 2, 3, 4, 5}
print(my_set.issubset({1, 2, 3, 4, 5, 6})) # True
print(my_set.issuperset({1, 2})) # True
print(my_set.isdisjoint({6, 7, 8})) # True - sin elementos comunes
print(my_set.copy()) # crea una copia superficial del conjunto
6. Otras operaciones de conjuntos
Más allá de las operaciones básicas, puedes comprobar la pertenencia, encontrar la longitud y más:
my_set = {1, 2, 3}
print(1 in my_set) # Salida: True
print(4 not in my_set) # Salida: True
print(len(my_set)) # Salida: 3
7. Funciones integradas con conjuntos
Funciones como all()
, any()
, sum()
, min()
, max()
funcionan con conjuntos:
my_set = {1, 2, 3, 4, 5}
print(sum(my_set)) # Salida: 15
print(min(my_set)) # Salida: 1
print(max(my_set)) # Salida: 5
print(all(x > 0 for x in my_set)) # Salida: True
print(any(x == 0 for x in my_set)) # Salida: False
8. Conjuntos congelados (frozensets)
frozenset
crea un conjunto inmutable. Una vez creado, no puedes añadir ni eliminar elementos. Son útiles como claves de diccionario o elementos de otros conjuntos.
my_frozenset = frozenset({1, 2, 3})
# my_frozenset.add(4) # Esto lanzará un AttributeError
print(my_frozenset) # Salida: frozenset({1, 2, 3})