Conjuntos en Python: ¿qué son y cómo usarlos?

| Última modificación: 25 de julio de 2024 | Tiempo de Lectura: 5 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabías que con Python puedes hacer operaciones de conjuntos, como en los cálculos matemáticos tradicionales? ¡Es muy simple! Los conjuntos en Python son una herramienta poderosa y versátil que te permite trabajar con grupos de elementos únicos. Vamos a explorar qué son los conjuntos en Python, cómo funcionan y cómo puedes utilizarlos en tus proyectos. ¡Aprende a programar con Python en unos cuantos minutos!

Conjuntos en Python

¿Qué son los conjuntos en Python?

Los conjuntos en Python, conocidos como sets, son colecciones no ordenadas de elementos únicos. Esto significa que cada elemento aparece una sola vez en el conjunto, y el orden en el que se almacenan no es importante. Los conjuntos son muy útiles para realizar operaciones de álgebra de conjuntos, como uniones, intersecciones y diferencias.

Cómo crear conjuntos en Python

Crear conjuntos en Python es muy sencillo. Puedes usar la función set() o definirlos directamente utilizando llaves {}:

# Usando la función set()
conjunto_vacio = set()
conjunto_con_elementos = set([1, 2, 3, 4])

# Usando llaves
otro_conjunto = {1, 2, 3, 4}

Operaciones básicas con conjuntos

Los conjuntos en Python permiten realizar una variedad de operaciones útiles. Veamos algunas de las más comunes:

Unión de conjuntos

Esta operación combina todos los elementos de dos conjuntos, eliminando duplicados. Si tienes, por ejemplo, el conjunto_a = {1, 2, 3} y el conjunto_b = {3, 4, 5}, la unión se realiza con conjunto_a | conjunto_b, resultando en {1, 2, 3, 4, 5}. Veamos cómo quedaría en Python:

# Conjuntos en Python
conjunto_a = {1, 2, 3}
conjunto_b = {3, 4, 5}
union_conjuntos = conjunto_a | conjunto_b
print(union_conjuntos) # Resultado: {1, 2, 3, 4, 5}

Intersección de conjuntos

La intersección de conjuntos devuelve los elementos que están presentes en ambos conjuntos. Por ejemplo, si tienes conjunto_a = {1, 2, 3} y conjunto_b = {3, 4, 5}, la intersección se realiza con conjunto_a & conjunto_b, resultando en {3}. Así quedaría con Python:

conjunto_a = {1, 2, 3}
conjunto_b = {3, 4, 5}
interseccion_conjuntos = conjunto_a & conjunto_b
print(interseccion_conjuntos) # Resultado: {3}

Diferencia de conjuntos

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

En esta operación se devuelven los elementos que están en el primer conjunto pero no en el segundo. En este ejemplo, si tienes conjunto_a = {1, 2, 3} y conjunto_b = {3, 4, 5}, la diferencia se realiza con conjunto_a - conjunto_b, resultando en {1, 2}:

conjunto_a = {1, 2, 3}
conjunto_b = {3, 4, 5}
diferencia_conjuntos = conjunto_a - conjunto_b
print(diferencia_conjuntos) # Resultado: {1, 2}

Diferencia simétrica de conjuntos

La diferencia simétrica devuelve los elementos que están en cualquiera de los conjuntos, pero no en ambos. Si tienes, por ejemplo, el conjunto_a = {1, 2, 3} y conjunto_b = {3, 4, 5}, la diferencia simétrica se realiza con conjunto_a ^ conjunto_b, resultando en {1, 2, 4, 5}.

conjunto_a = {1, 2, 3}
conjunto_b = {3, 4, 5}
diferencia_simetrica = conjunto_a ^ conjunto_b
print(diferencia_simetrica) # Resultado: {1, 2, 4, 5}

Métodos útiles para conjuntos en Python

Python proporciona una serie de métodos útiles para trabajar con conjuntos. Algunos de los más comunes son:

MétodoDescripciónEjemplo
addAñade un elemento al final del conjuntoset.add(5)
clearElimina toda la información del conjuntoset.clear()
copyDevuelve una copia del conjuntoset.copy()
differenceDevuelve las diferencias entre un conjunto sobre otroset.difference(st2)
difference_updateAplica las diferencias al primer conjuntoset.difference_update(st2)
discardIntenta eliminar un elemento del conjunto, exista o noset.discard('e')
intersectionDevuelve un conjunto con los elementos que están en otros dosset.intersection(st2)
intersection_updateSimilar a intersection pero actualizando el primer conjunto con el resultadoset.intersection_update(st2)
isdisjointDevuelve True si la intersección de los conjuntos vacíaset.isdisjoint(st2)
issubsetDevuelve True si el otro conjunto contiene el primeroset.issubset(st2)
issupersetDevuelve True si el primer conjunto contiene el segundoset.issuperset(st2)
popDevuelve y elimina un elemento arbitrario o devuelve un error si está vacíoset.pop()
removeIntenta eliminar un elemento del conjunto, si no existe eleva un errorset.remove(2)
symmetric_differenceDevuelve los elementos que están exactamente en uno de los setsset.symmetric_difference(st2)
symmetric_difference_updateSimilar a symmetric_difference pero actualizando el primer conjuntoset.symmetric_difference_update(st2)
unionDevuelve un conjunto con todos los elementos de ambos conjuntosset.union(st2)
updateActualiza el primer conjunto con otroset.update(st2)

Ejemplos de uso de conjuntos en Python

Los conjuntos en Python son extremadamente útiles en una variedad de situaciones. Veamos algunos ejemplos:

Eliminación de duplicados en una lista

Los conjuntos en Python almacenan solo elementos únicos, por lo que convertir una lista en Python a un conjunto elimina automáticamente cualquier duplicado.

Ejemplo: supongamos que tienes una lista con elementos duplicados:

lista_con_duplicados = [1, 2, 2, 3, 4, 4, 5]

Para eliminar los duplicados, puedes convertir esta lista a un conjunto y luego volver a convertirlo a una lista:

# Convertir la lista a un conjunto para eliminar duplicados
conjunto_sin_duplicados = set(lista_con_duplicados)

# Convertir el conjunto de nuevo a una lista
lista_sin_duplicados = list(conjunto_sin_duplicados)

# Imprimir la lista sin duplicados
print(lista_sin_duplicados) # Resultado: [1, 2, 3, 4, 5]

Verificación de pertenencia en conjuntos

La verificación de pertenencia en conjuntos es una operación que permite comprobar si un elemento está presente en un conjunto. En Python, esto se realiza utilizando el operador in, que devuelve True si el elemento está en el conjunto y False en caso contrario.

Ejemplo: supongamos que tienes un conjunto de frutas:

conjunto = {'manzana', 'banana', 'cereza'}

Para verificar si una fruta específica está en el conjunto, puedes usar el operador in:

# Verificar si 'manzana' está en el conjunto
print('manzana' in conjunto) # Resultado: True

# Verificar si 'naranja' está en el conjunto
print('naranja' in conjunto) # Resultado: False

Conjuntos inmutables: frozenset

Python también ofrece una versión inmutable de los conjuntos llamada frozenset. Una vez creado, un frozenset no se puede modificar, lo que lo hace útil para usar como clave en un diccionario en python o almacenar en otros conjuntos.

Ejemplo: Supongamos que necesitas un conjunto inmutable que contenga los números del 0 al 4:

# Crear un frozenset con los números del 0 al 4
conjunto_inmutable = frozenset(range(5))

# Intentar añadir un elemento a un frozenset (provocará un error)
try:
conjunto_inmutable.add(5)
except AttributeError as e:
print(e) # Resultado: 'frozenset' object has no attribute 'add'

# Verificar si un elemento está en el frozenset
print(2 in conjunto_inmutable) # Resultado: True
print(5 in conjunto_inmutable) # Resultado: False

# Mostrar el contenido del frozenset
print(conjunto_inmutable) # Resultado: frozenset({0, 1, 2, 3, 4})

Veamos la explicación:

  1. Crear un frozenset:
    • Utiliza frozenset(range(5)) para crear un frozenset que contiene los números del 0 al 4.
    • El resultado es frozenset({0, 1, 2, 3, 4}).
  2. Intentar añadir un elemento:
    • Intentas añadir el elemento 5 al frozenset utilizando conjunto_inmutable.add(5).
    • Esto provoca un error porque los frozenset son inmutables y no permiten modificaciones después de su creación.
    • El error AttributeError se captura y se imprime el mensaje: 'frozenset' object has no attribute 'add'.
  3. Verificar pertenencia:
    • Utilizas el operador in para comprobar si 2 está en el frozenset. El resultado es True porque 2 está presente en el conjunto.
    • Utilizas el operador in para comprobar si 5 está en el frozenset. El resultado es False porque 5 no está presente en el conjunto.
  4. Mostrar el contenido del frozenset:
    • Imprimes el contenido del frozenset utilizando print(conjunto_inmutable).
    • El resultado es frozenset({0, 1, 2, 3, 4}).

En caso de que quieras practicar, te dejamos algunos ejercicios de conjuntos en Python a los que puedes echarle una ojeada.

Si quieres aprender más sobre Python y cómo utilizar sus diversas estructuras de datos, como los conjuntos, para resolver problemas reales de programación, únete al bootcamp de programación de KeepCoding. Aquí te enseñaremos desde los fundamentos hasta las técnicas más avanzadas de programación, preparándote para una carrera exitosa en el sector IT. ¡Inscríbete hoy y transforma tu futuro profesional!

Ramón Maldonado

Full Stack Developer y Responsable de Formación base en KeepCoding.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.