| Author: Eduardo Enriquez

Sets en Python: conjuntos.

Los sets o conjuntos en Python son un tipo de unordered collection with no duplicate elements -colección desordenada sin repetidos-.

setsLos sets tienen la ventaja de soportar todas las operaciones matemáticas: union, intersection, difference y symmetric difference (ver documentación oficial aquí).

 

En Python 3 existen dos tipos de sets. Los sets propiamente dichos y los frozensets. Basicamente la diferencia reside en que los frozensets son inmutables, una vez creado no se le puede agregar elementos o remover elementos y tiene un hash value, lo que permite que sea clave de un dictionary o un elemento de otro set. Por lo tanto, los sets no tienen un hash value.

 

 

 

Como creamos un set:

# Puedo crearlo como llaves y valores separados con comas.
my_set = {"a", 1, 0, (1, )}


# Otra forma es usando el constructor set. Puede recibir una lista, tupla, dict o set.
my_set = set(["a", 1, 0, (1, )])


# Para crear un set vacío debo usar set(), si uso {} creo un dict.
my_empty_set = set()

Otra cosa importante es que los sets no soportan indexado. Esto quiere decir que no puedo acceder a un elemento del set por su indice:

In [1]: my_set = {"a", "b"}
In [2]: my_set[0]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-38-0b05dff78462> in <module>()
----> 1 my_set[0]

TypeError: 'set' object does not support indexing

Existen dos maneras de agregar elementos a un set: individualmente o de a grupos:

# De a un elemento con add
my_set.add("nuevo elemento")

# De a varios con update - este método recibe uno o varios iterables
my_set.update([2,3,4])
my_set.update([4,5], {1,"a","x"}, "hola")

Para eliminar elementos tenemos remove y discard. La diferencia reside en que remove si no existe el elemento lanza una excepcion, un KeyError, y discard si no encuentra devuelve None.

 

Related Posts