Un conjunto o set, es una colección desordenada y no indexada en la que no se permiten elementos repetidos. Los usos básicos de estos conjuntos incluyen verificación de pertenencia y eliminación de entradas duplicadas.
Los valores que componen un conjunto van indicados entre {} y separados por comas. A continuación, se muestra como declarar un conjunto, como mostrarlo y comprobar de qué tipo es el elemento creado:
datos = {4, "una cadena", -15, 3.14, "Otra cadena"}
print(datos)
print(type(datos))
{4, "una cadena", -15, 3.14, "Otra cadena"}
<class 'set'>
No podemos acceder a los elementos de un conjunto set haciendo referencia a un índice, porque los conjuntos no están ordenados y debido a esto, los elementos no tienen índice. Pero podemos recorrer los elementos del conjunto utilizando un bucle for que veremos más adelante, o preguntar si un calor especificado está presente en un conjunto, utilizando la palabra clave in
lenguajes = {"Python", "C++", "Java"}
for x in lenguajes:
print(x)
print("Python" in lenguajes)
Java
Python
C++
True
Una vez que se crea un conjunto set, no podemos cambiar sus elementos mediante el método add(), para agregar un elemento a un conjunto o mediante el método update(), para agregar más de un elemento a un conjunto.
Podemos observar como el orden es totalmente aleatorio y decidido por el lenguaje, y como, al no aceptar elementos repetidos, si añadimos de nuevo un elemento que ya existe, no se añadirá como un elemento nuevo:
letras = {'a','b','c'}
print(letras)
{'c', 'b', 'a'}
letras.add('d')
print(letras)
{'c', 'b', 'a', 'd'}
letras.apdate('e','f')
print(letras)
{'c', 'b', 'd', 'a', 'e', 'f'}
La función len() también funciona para los conjuntos
print(len(letras))
6
Para eliminar elementos del conjunto podemos utilizar dos métodos, discard() o remove(), indicando entre paréntesis el elemento que queremos eliminar
letras.remove('a')
letras.discard('b')
print(letras)
{'c', 'd', 'e', 'f'}
Si queremos buscar dentro del conjunto lo haremos con el operador in. Y si lo que queremos es eliminar todo un conjunto, utilizaremos el método clear().
'c' in letras
letras.clear
print(letras)
True
set()
Por último, debemos saber que los conjuntos no son anidables, de manera que no puede haber conjuntos dentro de otros conjuntos.
a = {1,2,3}
b={4,5,6}
c = {7,8,9}
r = {a,b,c}
TypeError: unhashable type: 'set'