DEV Community

Jerry W.
Jerry W.

Posted on

Sets en Python

Los sets son una estructura de datos muy similares a las listas en cuanto a su forma, pero presentan ciertas características particulares:

Los sets son mutables, solo contienen elementos inmutables no ordenados y no indexeables.

Cada elemento del set es único, esto es que no se admiten duplicados, aun si durante la definición del set se agregan elementos repetidos pyhton solo guarda un elemento.

Los sets guardan los elementos en desorden y para declararlos se utilizan las llaves {}.

# set de enteros
my_set = {1, 3, 5}
print(my_set)

# set de diferentes tipos de datos
my_set = {1.0, "Hi", (1, 4, 7)}
print(my_set)
Enter fullscreen mode Exit fullscreen mode

Modificaciones de un set

Los sets no pueden ser leídos como las listas o recorridos a través de slices, esto debido a que no tienen un criterio de orden. Sin embargo si podemos agregar o eliminar items de los sets utilizando métodos:

  • add(): nos permite agregar elementos al set, si se intenta agregar un elemento existente simplemente python los ignorara
  • update(): nos permite agregar múltiples elementos al set
  • remove(): permite eliminar un elemento del set, en el caso en que no se encuentre presente dicho elemento, Python elevará un error
  • discard(): permite eliminar un elemento del set, en el caso en que no se encuentre presente dicho elemento, Python dejará el set intacto, sin elevar ningún error.
  • pop(): borra aleatoriamente un elemento del set.
  • clear(): Limpia completamente el set, dejándolo vació.
#ejemplo de operaciones sobre sets 
my_set = {1, 2, 3} 
print(my_set) #Output {1, 2, 3} 

#añadiendo un elemento al set 
my_set.add(4) 
print(my_set) #Output {1, 2, 3, 4}

#añadiendo varios elementos al set, python ignorará elementos
#repetidos 
my_set.update([1, 5, 6]) 
print(my_set) #Output {1, 2, 3, 4, 5, 6}

# eliminado elementos del set 
my_set.discard(1) 
print(my_set) #Output {2, 3, 4, 5, 6}

# borrando un elemento aleatorio 
my_set.pop()
print(my_set) #Output el set menos un elemento aleatorio 

#limpiar el set 
my_set.clear()
print(my_set) # Output set()
Enter fullscreen mode Exit fullscreen mode

Creación de sets a partir de otras estructuras de datos

Podemos utilizar estructuras de datos existentes para transformarlas a sets utilizando el método set:

#usando listas para crear sets
my_list = [1, 2, 3, 3, 4, 5]
my_set = set(my_list)
print(my_set)  #output {1, 2, 3, 4, 5}

#usando tuplas para crear sets 
my_tuple: ('hola', 'hola', 1, 2)
my_set2: set(my_tuple)
print(my_set2) #Output {'hola', 1}
Enter fullscreen mode Exit fullscreen mode

Operaciones con Sets

Se pueden realizar operaciones con dos sets (set1 y set2), algunas de ellas son:

Unión

Todos los elementos del set1 y set2.

set1 = {3, 4, 5}
set2 = {5, 6, 7}

set3 = set1 | se2
print(set3)

# o utilizando el método unión
set3 = se1.union(set2)
Enter fullscreen mode Exit fullscreen mode
{3, 4, 5, 6, 7}
Enter fullscreen mode Exit fullscreen mode

Intersección

Todos los elementos que tienen en común el set1 y set2.

set1 = {3, 4, 5}
set2 = {5, 6, 7}

set3 = set1 & se2
print(set3)

# o utilizando el método intersection
set3 = set1.intersection(set2)
Enter fullscreen mode Exit fullscreen mode
{5}
Enter fullscreen mode Exit fullscreen mode

Diferencia

De los dos sets, se quitan todos los elementos que comparte del otro set.

set1 = {3, 4, 5}
set2 = {5, 6, 7}

set3 = set1 - se2
print(set3)

# o utilizando el método difference
set3 = set1.difference(set2)

set4 = set2.difference(set1)
print(set4)
Enter fullscreen mode Exit fullscreen mode
{3, 4}
{6, 7}
Enter fullscreen mode Exit fullscreen mode

Diferencia simétrica

Se quedan los elementos que NO se comparten entre ambos sets.

set1 = {3, 4, 5}
set2 = {5, 6, 7}

set3 = set1 ^ se2
print(set3)

# o utilizando el método difference
set3 = set1.symmetric_difference(set2)
Enter fullscreen mode Exit fullscreen mode
{3, 4, 6, 7}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)