Conjuntos de Python
Conjuntos de Python
En este tutorial, aprenderá todo sobre los conjuntos de Python; cómo se crean, agregando o eliminando elementos de ellos, y todas las operaciones realizadas en conjuntos en Python.
Video:Conjuntos en Python
Un conjunto es una colección desordenada de elementos. Cada elemento del conjunto es único (sin duplicados) y debe ser inmutable (no se puede cambiar).
Sin embargo, un conjunto en sí mismo es mutable. Podemos agregar o eliminar elementos de él.
Los conjuntos también se pueden usar para realizar operaciones matemáticas de conjuntos como unión, intersección, diferencia simétrica, etc.
Creación de conjuntos de Python
Un conjunto se crea colocando todos los elementos (elementos) dentro de llaves {}
, separados por comas, o usando el set()
integrado función.
Puede tener cualquier número de elementos y pueden ser de diferentes tipos (entero, flotante, tupla, cadena, etc.). Pero un conjunto no puede tener elementos mutables como listas, conjuntos o diccionarios como elementos.
# Different types of sets in Python
# set of integers
my_set = {1, 2, 3}
print(my_set)
# set of mixed datatypes
my_set = {1.0, "Hello", (1, 2, 3)}
print(my_set)
Salida
{1, 2, 3} {1.0, (1, 2, 3), 'Hello'}
Pruebe también los siguientes ejemplos.
# set cannot have duplicates
# Output: {1, 2, 3, 4}
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)
# we can make set from a list
# Output: {1, 2, 3}
my_set = set([1, 2, 3, 2])
print(my_set)
# set cannot have mutable items
# here [3, 4] is a mutable list
# this will cause an error.
my_set = {1, 2, [3, 4]}
Salida
{1, 2, 3, 4} {1, 2, 3} Traceback (most recent call last): File "<string>", line 15, in <module> my_set = {1, 2, [3, 4]} TypeError: unhashable type: 'list'
Crear un conjunto vacío es un poco complicado.
Llaves vacías {}
hará un diccionario vacío en Python. Para hacer un conjunto sin ningún elemento, usamos el set()
función sin ningún argumento.
# Distinguish set and dictionary while creating empty set
# initialize a with {}
a = {}
# check data type of a
print(type(a))
# initialize a with set()
a = set()
# check data type of a
print(type(a))
Salida
<class 'dict'> <class 'set'>
Modificar un conjunto en Python
Los conjuntos son mutables. Sin embargo, dado que no están ordenados, la indexación no tiene sentido.
No podemos acceder o cambiar un elemento de un conjunto mediante la indexación o el corte. Establecer tipo de datos no lo admite.
Podemos agregar un solo elemento usando el add()
método y múltiples elementos usando el update()
método. El update()
El método puede tomar tuplas, listas, cadenas u otros conjuntos como argumento. En todos los casos se evitan los duplicados.
# initialize my_set
my_set = {1, 3}
print(my_set)
# my_set[0]
# if you uncomment the above line
# you will get an error
# TypeError: 'set' object does not support indexing
# add an element
# Output: {1, 2, 3}
my_set.add(2)
print(my_set)
# add multiple elements
# Output: {1, 2, 3, 4}
my_set.update([2, 3, 4])
print(my_set)
# add list and set
# Output: {1, 2, 3, 4, 5, 6, 8}
my_set.update([4, 5], {1, 6, 8})
print(my_set)
Salida
{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}
Eliminar elementos de un conjunto
Un artículo en particular se puede eliminar de un conjunto usando los métodos discard()
y remove()
.
La única diferencia entre los dos es que el discard()
La función deja un conjunto sin cambios si el elemento no está presente en el conjunto. Por otro lado, el remove()
La función generará un error en tal condición (si el elemento no está presente en el conjunto).
El siguiente ejemplo ilustrará esto.
# Difference between discard() and remove()
# initialize my_set
my_set = {1, 3, 4, 5, 6}
print(my_set)
# discard an element
# Output: {1, 3, 5, 6}
my_set.discard(4)
print(my_set)
# remove an element
# Output: {1, 3, 5}
my_set.remove(6)
print(my_set)
# discard an element
# not present in my_set
# Output: {1, 3, 5}
my_set.discard(2)
print(my_set)
# remove an element
# not present in my_set
# you will get an error.
# Output: KeyError
my_set.remove(2)
Salida
{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Traceback (most recent call last): File "<string>", line 28, in <module> KeyError: 2
Del mismo modo, podemos eliminar y devolver un artículo usando el pop()
método.
Dado que el conjunto es un tipo de datos desordenado, no hay forma de determinar qué elemento aparecerá. Es completamente arbitrario.
También podemos eliminar todos los artículos de un conjunto usando el clear()
método.
# initialize my_set
# Output: set of unique elements
my_set = set("HelloWorld")
print(my_set)
# pop an element
# Output: random element
print(my_set.pop())
# pop another element
my_set.pop()
print(my_set)
# clear my_set
# Output: set()
my_set.clear()
print(my_set)
print(my_set)
Salida
{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} set()
Operaciones de conjunto de Python
Los conjuntos se pueden utilizar para realizar operaciones matemáticas de conjuntos como unión, intersección, diferencia y diferencia simétrica. Podemos hacer esto con operadores o métodos.
Consideremos los siguientes dos conjuntos para las siguientes operaciones.
>>> A = {1, 2, 3, 4, 5}
>>> B = {4, 5, 6, 7, 8}
Establecer Unión
Unión de A y B es un conjunto de todos los elementos de ambos conjuntos.
La unión se realiza usando |
operador. Lo mismo se puede lograr usando el union()
método.
# Set union method
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use | operator
# Output: {1, 2, 3, 4, 5, 6, 7, 8}
print(A | B)
Salida
{1, 2, 3, 4, 5, 6, 7, 8}
Pruebe los siguientes ejemplos en Python shell.
# use union function
>>> A.union(B)
{1, 2, 3, 4, 5, 6, 7, 8}
# use union function on B
>>> B.union(A)
{1, 2, 3, 4, 5, 6, 7, 8}
Establecer intersección
Intersección de A y B es un conjunto de elementos que son comunes en ambos conjuntos.
La intersección se realiza usando &
operador. Lo mismo se puede lograr usando el intersection()
método.
# Intersection of sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use & operator
# Output: {4, 5}
print(A & B)
Salida
{4, 5}
Pruebe los siguientes ejemplos en Python shell.
# use intersection function on A
>>> A.intersection(B)
{4, 5}
# use intersection function on B
>>> B.intersection(A)
{4, 5}
Establecer diferencia
Diferencia del conjunto B del conjunto A (A - B ) es un conjunto de elementos que solo están en A pero no en B . Del mismo modo, B - A es un conjunto de elementos en B pero no en A .
La diferencia se realiza usando -
operador. Lo mismo se puede lograr usando el difference()
método.
# Difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use - operator on A
# Output: {1, 2, 3}
print(A - B)
Salida
{1, 2, 3}
Pruebe los siguientes ejemplos en Python shell.
# use difference function on A
>>> A.difference(B)
{1, 2, 3}
# use - operator on B
>>> B - A
{8, 6, 7}
# use difference function on B
>>> B.difference(A)
{8, 6, 7}
Establecer diferencia simétrica
Diferencia simétrica de A y B es un conjunto de elementos en A y B pero no en ambos (excluyendo la intersección).
La diferencia simétrica se realiza usando ^
operador. Lo mismo se puede lograr usando el método symmetric_difference()
.
# Symmetric difference of two sets
# initialize A and B
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
# use ^ operator
# Output: {1, 2, 3, 6, 7, 8}
print(A ^ B)
Salida
{1, 2, 3, 6, 7, 8}
Pruebe los siguientes ejemplos en Python shell.
# use symmetric_difference function on A
>>> A.symmetric_difference(B)
{1, 2, 3, 6, 7, 8}
# use symmetric_difference function on B
>>> B.symmetric_difference(A)
{1, 2, 3, 6, 7, 8}
Otros métodos de conjuntos de Python
Hay muchos métodos establecidos, algunos de los cuales ya hemos usado anteriormente. Aquí hay una lista de todos los métodos que están disponibles con los objetos establecidos:
Método | Descripción |
---|---|
añadir() | Agrega un elemento al conjunto |
borrar() | Elimina todos los elementos del conjunto |
copiar() | Devuelve una copia del conjunto |
diferencia() | Devuelve la diferencia de dos o más conjuntos como un nuevo conjunto |
diferencia_actualizar() | Elimina todos los elementos de otro conjunto de este conjunto |
descartar() | Elimina un elemento del conjunto si es un miembro. (No haga nada si el elemento no está en el conjunto) |
intersección() | Devuelve la intersección de dos conjuntos como un nuevo conjunto |
intersección_actualización() | Actualiza el conjunto con la intersección de sí mismo y otro |
es disjunto() | Devuelve True si dos conjuntos tienen una intersección nula |
es un subconjunto() | Devuelve True si otro conjunto contiene este conjunto |
essuperconjunto() | Devuelve True si este conjunto contiene otro conjunto |
pop() | Elimina y devuelve un elemento de conjunto arbitrario. Aumenta KeyError si el conjunto está vacío |
eliminar() | Elimina un elemento del conjunto. Si el elemento no es miembro, lanza un KeyError |
diferencia_simétrica() | Devuelve la diferencia simétrica de dos conjuntos como un nuevo conjunto |
diferencia_simétrica_actualización() | Actualiza un conjunto con la diferencia simétrica de sí mismo y otro |
unión() | Devuelve la unión de conjuntos en un nuevo conjunto |
actualizar() | Actualiza el conjunto con la unión de sí mismo y otros |
Otras operaciones de conjuntos
Establecer prueba de membresía
Podemos probar si un artículo existe en un conjunto o no, usando el in
palabra clave.
# in keyword in a set
# initialize my_set
my_set = set("apple")
# check if 'a' is present
# Output: True
print('a' in my_set)
# check if 'p' is present
# Output: False
print('p' not in my_set)
Salida
True False
Iterando a través de un conjunto
Podemos iterar a través de cada elemento en un conjunto usando un for
bucle.
>>> for letter in set("apple"):
... print(letter)
...
a
p
e
l
Funciones integradas con Set
Funciones integradas como all()
, any()
, enumerate()
, len()
, max()
, min()
, sorted()
, sum()
etc. se usan comúnmente con conjuntos para realizar diferentes tareas.
Función | Descripción |
---|---|
todos() | Devuelve True si todos los elementos del conjunto son verdaderos (o si el conjunto está vacío). |
cualquiera() | Devuelve True si algún elemento del conjunto es verdadero. Si el conjunto está vacío, devuelve False . |
enumerar() | Devuelve un objeto enumerado. Contiene el índice y el valor de todos los elementos del conjunto como un par. |
largo() | Devuelve la longitud (el número de elementos) en el conjunto. |
máximo() | Devuelve el elemento más grande del conjunto. |
mín() | Devuelve el elemento más pequeño del conjunto. |
ordenado() | Devuelve una nueva lista ordenada de elementos en el conjunto (no ordena el conjunto en sí). |
suma() | Devuelve la suma de todos los elementos del conjunto. |
Python Congelado
Frozenset es una nueva clase que tiene las características de un conjunto, pero sus elementos no se pueden cambiar una vez asignados. Mientras que las tuplas son listas inmutables, los conjuntos congelados son conjuntos inmutables.
Los conjuntos que son mutables no se pueden modificar, por lo que no se pueden usar como claves de diccionario. Por otro lado, los conjuntos congelados se pueden modificar y se pueden usar como claves para un diccionario.
Los conjuntos congelados se pueden crear usando la función frozenset().
Este tipo de datos admite métodos como copy()
, difference()
, intersection()
, isdisjoint()
, issubset()
, issuperset()
, symmetric_difference()
y union()
. Al ser inmutable, no tiene métodos que agreguen o eliminen elementos.
# Frozensets
# initialize A and B
A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])
Pruebe estos ejemplos en el shell de Python.
>>> A.isdisjoint(B)
False
>>> A.difference(B)
frozenset({1, 2})
>>> A | B
frozenset({1, 2, 3, 4, 5, 6})
>>> A.add(3)
...
AttributeError: 'frozenset' object has no attribute 'add'
python