Conjuntos o sets en Python

Conjuntos o sets en Python: operaciones y usos

En el lenguaje Python existen los llamados conjuntos  o sets, los mismos conjuntos que vemos en matemáticas (en matemáticas discretas, sobre todo) y a los que les hacemos operaciones como unión, intersección, complemento y todo ello.

Python permite hacer operaciones con conjuntos de una manera fácil y sencilla.

Conjuntos o sets en Python
Conjuntos o sets en Python

Justamente hoy veremos eso: cómo trabajar con conjuntos (set) en Python. Recuerda que debes instalar y configurar Python si quieres ejecutar los ejercicios.

Nota: también puedes instalar Python en Android.

Conjuntos en Python

En el post voy a usar set y conjunto de manera intercambiable. Es decir, me voy a referir a lo mismo tanto si digo set como si digo conjunto; esto para evitar repetir la misma palabra.

Para crear un conjunto lo definimos con las llaves {} o llamamos a la función set pasándole una lista.

# Usar llaves {}
personajes = {"Walter White", "Hank", "Skyler", "Jesse", "Jane", "Saul"}
print(personajes)
# o llamar a set() pasándole una lista
lenguajes = set(["PHP", "Python", "Go", "Rust", "JavaScript"])
print(lenguajes)

Ambas maneras son válidas, pues al final se obtiene un conjunto. Es hora de ver las operaciones.

Para las operaciones, usaremos los siguientes conjuntos:

animales_terrestres = set(["Tortuga", "Lobo", "Perro", "Cangrejo"])
animales_acuaticos = set(["Tiburón", "Pulpo", "Tortuga", "Cangrejo"])

No sé si esos animales realmente sean acuáticos y terrestres pero por ahora vamos a suponer que sí.

Métodos que necesitas saber

Para obtener la longitud se usa len, para saber si un elemento existe en una lista se usa in.

Dos métodos muy útiles son issubset e issuperset; el primero ayuda a probar si el primer conjunto es un subconjunto del segundo (o sea, que todos sus elementos estén en el otro) y el segundo prueba lo contrario.

Para copiar un conjunto se llama al método copy.

La documentación oficial la encuentras aquí.

Unión de conjuntos con Python

La unión de conjuntos es cuando unimos dos conjuntos (wow, qué profundo).

Para unir 2 conjuntos llamamos al método union que cada conjunto tiene. Como argumento pasamos uno o más conjuntos. Aquí el ejemplo:

animales_terrestres = set(["Tortuga", "Lobo", "Perro", "Cangrejo"])
print("Terrestres: ", animales_terrestres)
animales_acuaticos = set(["Tiburón", "Pulpo", "Tortuga", "Cangrejo"])
print("Acuáticos: ", animales_acuaticos)

todos_los_animales = animales_terrestres.union(animales_acuaticos)
print("Unión: ", todos_los_animales)

El conjunto resultante es {‘Tiburón’, ‘Tortuga’, ‘Lobo’, ‘Cangrejo’, ‘Pulpo’, ‘Perro’} porque los repetidos se toman en cuenta una única vez.

También podíamos usar el operador | (sí, el pipe) así:

todos_los_animales = animales_terrestres | animales_acuaticos

Aunque se recomienda la primera forma, pues es más explícita.

Intersección de conjuntos con Python

La operación de intersección es cuando creamos un conjunto que se encuentra en ambos conjuntos. Para hacer la operación de intersección llamamos al método intersection o aplicamos el operador &, o sea, ampersand.

animales_terrestres = set(["Tortuga", "Lobo", "Perro", "Cangrejo"])
print("Terrestres: ", animales_terrestres)
animales_acuaticos = set(["Tiburón", "Pulpo", "Tortuga", "Cangrejo"])
print("Acuáticos: ", animales_acuaticos)

animales_terrestres_y_acuaticos = animales_terrestres.intersection(
    animales_acuaticos)
print("Intersección: ", animales_terrestres_y_acuaticos)
# También usando el operador &
animales_terrestres_y_acuaticos = animales_terrestres & animales_acuaticos
print("Intersección con &: ", animales_terrestres_y_acuaticos)

El resultado de la intersección es {‘Cangrejo’, ‘Tortuga’}.

Diferencia de conjuntos con Python

La diferencia es eliminar del primer conjunto todo lo que no esté en el segundo. Para hacer esta operación se usa el método difference o el operador -, así como si estuviéramos restando números.

animales_terrestres = set(["Tortuga", "Lobo", "Perro", "Cangrejo"])
print("Terrestres: ", animales_terrestres)
animales_acuaticos = set(["Tiburón", "Pulpo", "Tortuga", "Cangrejo"])
print("Acuáticos: ", animales_acuaticos)

animales_unicamente_terrestres = animales_terrestres.difference(animales_acuaticos)
print("Diferencia: ", animales_unicamente_terrestres)
# También usando el operador -
animales_unicamente_terrestres = animales_terrestres - animales_acuaticos
print("Diferencia con -: ", animales_unicamente_terrestres)

Así se obtiene un conjunto que tiene lo que hay en el primero pero no en el segundo. En este caso el resultado es:

{‘Lobo’, ‘Perro’}

Complemento de un conjunto

Para calcular el complemento hacemos una simple diferencia, poniendo un conjunto como el conjunto universal.

Diferencia simétrica

Este es un conjunto de elementos que están ya sea en el primero o en el segundo conjunto, pero no en ambos.

Para obtener la diferencia simétrica de dos conjuntos con Python se usa el método symmetric_difference o el operador ^.

animales_terrestres = set(["Tortuga", "Lobo", "Perro", "Cangrejo"])
print("Terrestres: ", animales_terrestres)
animales_acuaticos = set(["Tiburón", "Pulpo", "Tortuga", "Cangrejo"])
print("Acuáticos: ", animales_acuaticos)

diferencia_simetrica = animales_terrestres.symmetric_difference(
    animales_acuaticos)
print("Diferencia simétrica: ", diferencia_simetrica)
# También usando el operador ^
diferencia_simetrica = animales_terrestres ^ animales_acuaticos
print("Diferencia simétrica con ^: ", diferencia_simetrica)

Como vemos, la diferencia simétrica es lo contrario de la intersección. El resultado es el siguiente:

{‘Pulpo’, ‘Tiburón’, ‘Perro’, ‘Lobo’}

Conclusión

Hay otros operadores que no mencioné, los cuales son >= que hace lo mismo que issuperset y <= que es lo mismo que issubset.

Aparte de ellos, existe > que es como usar >= pero también verifica que los conjuntos no sean iguales. Lo mismo para < con <=. Si no entiendes esto último lee el párrafo anterior.

Como siempre, te invito a leer más sobre Python o Matemáticas discretas.

 

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *