Introducción a los conjuntos
Un conjunto es una colección desordenada y mutable que no permite elementos duplicados. Gracias a esta característica, los conjuntos son ideales para eliminar duplicados de secuencias y realizar operaciones matemáticas como uniones, intersecciones y diferencias.
Se pueden crear utilizando llaves {} o la función set(). La sintaxis básica es:
conjunto = {valor1, valor2, ...}
# o
conjunto = set(iterable)
Por ejemplo:
numeros_a = {1, 2, 3, 4}
numeros_b = set([4, 5, 6, 7])
Importante: Para crear un conjunto vacío, debe usarse set(), ya que {} genera un diccionario vacío. Ejemplos prácticos
Los conjuntos eliminan automáticamente los valores repetidos:
>>> frutas = {'manzana', 'naranja', 'manzana', 'pera', 'naranja', 'plátano'}
>>> print(frutas)
{'naranja', 'plátano', 'pera', 'manzana'}
Además, permiten verificar rápidamente si un elemento está presente:
>>> 'naranja' in frutas
True
>>> 'espinaca' in frutas
False
Operaciones entre conjuntos
Considere dos conjuntos derivados de cadenas:
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
a - b: Elementos enapero no enb→{'r', 'd', 'b'}a | b: Unión deayb→{'a', 'r', 'b', 'c', 'd', 'l', 'm', 'z'}a & b: Intersección →{'a', 'c'}a ^ b: Diferencia simétrica (elementos en uno u otro, pero no en ambos) →{'r', 'd', 'b', 'l', 'm', 'z'}
Comprensión de conjuntos
Al igual que las listas, Python soporta comprensión de conjuntos:
>>> resultado = {letra for letra in 'abracadabra' if letra not in 'abc'}
>>> resultado
{'r', 'd'}
Manipulación de elementos
Añadir elementos
El método add() inserta un solo elemento:
>>> sitios = set(['Google', 'Runoob', 'Taobao'])
>>> sitios.add('Facebook')
>>> print(sitios)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
Para añadir múltiples elementos desde distintos iterables, use update():
>>> sitios.update([1, 2], [3, 4])
>>> print(sitios)
{1, 2, 3, 4, 'Google', 'Taobao', 'Runoob', 'Facebook'}
Eliminar elementos
Use remove() para eliminar un elemento específico. Si no existe, lanza un error KeyError:
>>> sitios.remove('Taobao')
>>> sitios.remove('Inexistente') # Genera excepción
En cambio, discard() no genera error si el elemento no está presente:
>>> sitios.discard('Amazon') # No hace nada si no existe
El método pop() elimina y devuelve un elemento arbitrario (no se puede predecir cuál será):
>>> eliminado = sitios.pop()
>>> print(eliminado)
Otras operaciones comunes
Obtener el número de elementos con len():
>>> len(sitios)
7
Vaciar completamente el conjunto:
>>> sitios.clear()
>>> print(sitios)
set()
Verificar pertenencia:
>>> 'Google' in sitios
False
Métodos disponibles para conjuntos
| Método | Descripción |
|---|---|
| add() | Agrega un elemento al conjunto |
| clear() | Elimina todos los elementos |
| copy() | Devuelve una copia superficial del conjunto |
| difference() | Retorna los elementos exclusivos del conjunto original |
| difference_update() | Actualiza el conjunto removiendo elementos comunes con otro |
| discard() | Remueve un elemento sin lanzar error si no existe |
| intersection() | Devuelve los elementos comunes entre conjuntos |
| intersection_update() | Actualiza el conjunto para mantener solo los elementos comunes |
| isdisjoint() | Retorna True si no hay elementos en común |
| issubset() | Verifica si el conjunto es subconjunto de otro |
| issuperset() | Verifica si el conjunto contiene todos los elementos de otro |
| pop() | Extrae y elimina un elemento aleatorio |
| remove() | Elimina un elemento específico; lanza error si no existe |
| symmetric_difference() | Devuelve elementos únicos de cada conjunto |
| symmetric_difference_update() | Actualiza el conjunto con la diferencia simétrica |
| union() | Combina elementos de múltiples conjuntos |
| udpate() | Incorpora elementos de otros iterables |
| len() | Devuelve el número total de elementos |