tutz

Sets en Python

En Python 2.4 se agrego un nuevo tipo llamado "Set", una colección desordenada de objetos unicos e inmutables que soportan operaciones que corresponden a la teoria matematica de conjuntos.

Por definición, un elemento aparece solo una vez dentro de un set, no importa cuantas veces el elemento sea agregado.

Este tipo en Python tiene una variedad de aplicaciones, especialmente en trabajos númericos o enfocados en base de datos.

Los sets comparten algunas caracteristicas con las listas y diccionarios, por ejemplo son iterables, pueden crecer y reducirse a demanda y pueden contener una varidad de tipos de objetos.

Sintaxis

En Python 3 los sets se escriben entre llaves {}. Por ejemplo:

>>> numeros_primos = {1,2,3,5,7,11}
>>> numeros_primos
{1,2,3,5,7,11}

Otra manera de escribir es usando la funcion set()

>>> numeros = set([1,2,6])
>>> numeros
{1, 2, 6}
>>> letras = set("spam")
>>> letras
{'p', 'a', 'm', 's'}

Operaciones y métodos en Sets

Add()

Si queremos agregar un objeto dentro de un set, podemos hacer uso de su método add(). Por ejemplo

>>> numeros_primos.add(13)
>>> numeros_primos
{1,2,3,5,7,11,13}

Como comentamos lineas arriba, en este tipo de dato podemos hacer uso de la teoria matematica de conjuntos.

Intersección (&)

Nos sirve para seleccionar los elementos que coinciden en los conjuntos.

>>> numeros && numeros_primos
{1, 2}

Nos devuleve 1 y 2 que son los que se repiten entre estos conjuntos.

Union (|)

Agrupa los elementos de los dos conjuntos en un nuevo conjunto sin repetir los elementos.

>>> numeros | numeros_primos
{1, 2, 3, 5, 6, 7, 11, 13}

Diferencia (-)

Nos devuelve los elementos que no coinciden en el otro conjunto

>>> numeros - numeros_primos
{6}

Validar si pertenece o no a un conjunto (>)

>>> numeros > {1, 2}
True
>>> numeros > {1, 8}
False

En el primero caso el conjunto {1, 2} si pertenece al conjunto numeros, a diferencia del segundo ejemplo donde el conjunto {1, 8} no pertenece al conjunto numeros ya que el elemento 8 no esta incluido en el conjunto numeros.

Usos comunes para trabajar con sets

Hay algunos casos en los cuales este tipo de dato puede ayudarte muchísimo.

Eliminar duplicados

Por ejemplo tenemos una lista de numeros ([1,3,4,4,6,7,9,9,1]) y queremos eliminar los duplicados en esta lista. Vamos a ello:

>>> lista = [1, 3, 4, 4, 6, 7, 9, 9, 1]
>>> set(lista)
{1, 3, 4, 6, 7, 9}
>>> nueva_lista = list(set(lista))
[1, 3, 4, 6, 7, 9]

Comprobar si las listas tienen los mismos elementos

Por ejemplo tenemos dos listas ([1, 3] y [3, 1]) y queremos saber si tienen los mismos elementos.

>>> a, b = [1, 3], [3, 1]
>>> a == b
False
>>> set(a) == set(b)
True

Usando set() podemos darnos cuenta si los elementos son los mismos o no.

En otros articulos veremos mas operaciones y métodos con los tipos sets en Python.