Conjuntos de Python3

Un conjunto (set) es una secuencia de elementos únicos y desordenados.

Los elementos de un conjunto no se repiten, y se pueden realizar operaciones comunes de conjuntos como intersección, unión y diferencia.

Puedes usar llaves{ }para crear un conjunto, con comas entre los elementos,para separarlos, o también puedes usarset()la función para crear un conjunto.

Formato de creación:

parame = {value01,value02,...}
或者
set(value)

El siguiente es un ejemplo sencillo:

set1 = {1, 2, 3, 4}            # 直接使用大括号创建集合
set2 = set([4, 5, 6, 7])      # 使用 set() 函数从列表创建集合

Nota:Para crear un conjunto vacío, debes usar set()en lugar de{ }, porque{ }se usa para crear un diccionario vacío.

Más ejemplos de demostración:

Ejemplo (Python 3.0+)

>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)                      # Aquí se demuestra la función de eliminar duplicados
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket                 # Determina rápidamente si el elemento está en el conjunto
True
>>> 'crabgrass' in basket
False

>>> # A continuación se muestran las operaciones entre dos conjuntos.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a                                  
{'a', 'r', 'b', 'c', 'd'}
>>> a - b                              # Elementos contenidos en el conjunto a pero no en el conjunto b
{'r', 'd', 'b'}
>>> a | b                              # Todos los elementos contenidos en el conjunto a o b
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b                              # Elementos contenidos tanto en el conjunto a como en el b
{'a', 'c'}
>>> a ^ b                              # Elementos que no están contenidos simultáneamente en a y b
{'r', 'd', 'b', 'm', 'z', 'l'}

Al igual que la comprensión de listas, los conjuntos también admiten la comprensión de conjuntos (Set comprehension):

Ejemplo (Python 3.0+)

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

Operaciones básicas de conjuntos

1. Agregar elementos

El formato de sintaxis es el siguiente:

s.add( x )

Agrega el elemento x al conjunto s; si el elemento ya existe, no realiza ninguna operación.

Ejemplo (Python 3.0+)

>>> thisset = set(("Google", "Ejemplo", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Ejemplo'}

Hay otro método que también puede agregar elementos, y el parámetro puede ser una lista, tupla, diccionario, etc. El formato de sintaxis es el siguiente:

s.update( x )

Puede haber varios x, separados por comas.

Ejemplo (Python 3.0+)

>>> thisset = set(("Google", "Ejemplo", "Taobao"))
>>> thisset.update({1,3})
>>> print(thisset)
{1, 3, 'Google', 'Taobao', 'Ejemplo'}
>>> thisset.update([1,4],[5,6])  
>>> print(thisset)
{1, 3, 4, 5, 6, 'Google', 'Taobao', 'Ejemplo'}
>>>

2. Eliminar elementos

El formato de sintaxis es el siguiente:

s.remove( x )

Elimina el elemento x del conjunto s; si el elemento no existe, se producirá un error.

Ejemplo (Python 3.0+)

>>> thisset = set(("Google", "Ejemplo", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Ejemplo'}
>>> thisset.remove("Facebook")   # Si no existe, se producirá un error
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
>>>

Además, hay otro método que también elimina elementos del conjunto y, si el elemento no existe, no se produce ningún error. El formato es el siguiente:

s.discard( x )

Ejemplo (Python 3.0+)

>>> thisset = set(("Google", "Ejemplo", "Taobao"))
>>> thisset.discard("Facebook")  # Si no existe, no se producirá un error
>>> print(thisset)
{'Taobao', 'Google', 'Ejemplo'}

También podemos configurar la eliminación aleatoria de un elemento del conjunto. El formato de sintaxis es el siguiente:

s.pop() 

Ejemplo en modo script (Python 3.0+)

thisset = set(("Google", "Ejemplo", "Taobao", "Facebook"))
x = thisset.pop()

print(x)

Resultado de salida:

Ejemplo

Los resultados de la prueba son diferentes en cada ejecución.

El método pop del conjunto set ordena el conjunto de manera desordenada y luego elimina el primer elemento por la izquierda de ese conjunto desordenado.

3. Contar el número de elementos del conjunto

El formato de sintaxis es el siguiente:

len(s)

Cuenta el número de elementos del conjunto s.

Ejemplo (Python 3.0+)

>>> thisset = set(("Google", "Ejemplo", "Taobao"))
>>> len(thisset)
3

4. Vaciar el conjunto

El formato de sintaxis es el siguiente:

s.clear()

Vacía el conjunto s.

Ejemplo (Python 3.0+)

>>> thisset = set(("Google", "Ejemplo", "Taobao"))
>>> thisset.clear()
>>> print(thisset)
set()

5. Determinar si el elemento existe en el conjunto

El formato de sintaxis es el siguiente:

x in s

Determina si el elemento x está en el conjunto s; si existe, devuelve True; si no, devuelve False.

Ejemplo (Python 3.0+)

>>> thisset = set(("Google", "Ejemplo", "Taobao"))
>>> "Ejemplo" in thisset
True
>>> "Facebook" in thisset
False
>>>

Lista completa de métodos integrados de conjuntos

Método Descripción
add()Agrega un elemento al conjunto
clear()Elimina todos los elementos del conjunto
copy()Copia un conjunto
difference()Devuelve la diferencia de varios conjuntos
difference_update()Elimina del conjunto el elemento que también existe en el conjunto especificado.
discard()Elimina el elemento especificado del conjunto
intersection()Devuelve la intersección de los conjuntos
intersection_update()Devuelve la intersección de los conjuntos.
isdisjoint()Determina si dos conjuntos contienen los mismos elementos; si no, devuelve True; de lo contrario, devuelve False.
issubset()Determina si el conjunto especificado es un subconjunto del conjunto pasado como parámetro de este método.
issuperset()Determina si el conjunto pasado como parámetro de este método es un subconjunto del conjunto especificado.
pop()Elimina aleatoriamente un elemento
remove()Elimina el elemento especificado
symmetric_difference()Devuelve el conjunto de elementos no repetidos de los dos conjuntos.
symmetric_difference_update()Elimina del conjunto actual los elementos que también existen en otro conjunto especificado, e inserta en el conjunto actual los elementos de ese otro conjunto especificado que no existen en el conjunto actual.
union()Devuelve la unión de dos conjuntos
update()Agrega elementos al conjunto
len()Cuenta el número de elementos del conjunto
Otras extensiones