Python: Unión, intersección y diferencia de conjuntos

Objetivo: aprender a realizar operaciones como la unión, intersección y diferencia de conjuntos en Python.

Continuamos nuestro repaso al tipo set en Python aprendiendo, por fin. a realizar las operaciones clásicas por antonomasia.

Definamos antes algunos conjuntos sobre los que practicar:

>>> c1 = {1, 2, 3, 4, 5, 6}
>>> c2 = {2, 4, 6, 8, 10}
>>> c3 = {1, 2, 3}
>>> c4 = {4, 5, 6}

Empecemos por la unión de dos conjuntos, definida como el conjunto de elementos que están en uno o en otro (o en ambos).

>>> c1 | c2
{1, 2, 3, 4, 5, 6, 8, 10}

Podemos incluir más de dos operandos:

>>> c1 | c2 | c3
{1, 2, 3, 4, 5, 6, 8, 10}

Y seguimos con la intersección: el conjunto de elementos que estan en ambos.

>>> c1 & c2
{2, 4, 6}

>>> c1 & c2 & c3 & c4
set()       # El conjunto vacío

Estos operadores también tienen variantes como métodos del objeto set. Observa su uso autoexplicativo:

>>> c1.union(c2)
{1, 2, 3, 4, 5, 6, 8, 10}

>>> c1.intersection(c2, c3)
{2}

La diferencia de dos conjuntos A y B, A – B, es el conjunto de elementos que están en A pero no en B. En Python se implementa con un operador de resta simple (-):

>>> c1 - c2
{1, 3, 5}

La unión exclusiva, también conocida como diferencia simétrica, es el conjunto de elementos que están en A o B, pero no en ambos:

>>> c1 ^ c2
{1, 3, 5, 8, 10}

Compara este resultado con la unión, calculada anteriormente.

También existe versión método para estos operadores:

>>> c1.difference(c2)
{1, 3, 5}

>>> c1.symmetric_difference(c2)
{1, 3, 5, 8, 10}

Más adelante conoceremos situaciones en las que será más interesante usar los métodos que los operadores, aunque ahora quizás te resulte redundante.

Aún nos quedan algunos métodos por conocer relacionados con los conjuntos, pero no dispongo de más tiempo por hoy, de modo que los dejaremos para la siguiente ocasión.

Para finalizar, un pequeño consejito: conoce bien las estructuras de datos y el tipo de operaciones que puedes realizar con ellas. Con frecuencia, resolver elegantemente un problema de programación no se reduce a otra cosa sino a elegir la estructura de datos más adecuada.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/07/python-union-interseccion-y-diferencia-de-conjuntos/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Deja un comentario