Breaking

Post Top Ad

Your Ad Spot

viernes, 5 de julio de 2019

Sets en Python

Introducción

En Python, un conjunto es una estructura de datos que almacena elementos no ordenados. Los elementos establecidos también están sin indexar. Como una lista, un conjunto permite la adición y eliminación de elementos. Sin embargo, hay algunas características únicas que definen un conjunto y lo separan de otras estructuras de datos:
  • Un conjunto no contiene elementos duplicados.
  • Los elementos del conjunto son inmutables, es decir, no se pueden cambiar, pero el conjunto en sí es mutable, es decir, se puede cambiar.
  • Dado que los elementos establecidos no están indexados, los conjuntos no admiten ninguna operación de segmentación o indexación.
En este artículo, discutiremos las diversas operaciones que pueden realizarse en conjuntos en Python.

Cómo crear un conjunto

Hay dos formas a través de las cuales podemos crear conjuntos en Python.
Podemos crear un conjunto pasando todos los elementos dentro de llaves {}y separando los elementos con comas (,). Un conjunto puede contener cualquier número de elementos y los elementos pueden ser de diferentes tipos, por ejemplo, enteros, cadenas, tuplas, etc. Sin embargo, un conjunto no acepta un elemento que sea mutable, por ejemplo, una lista, un diccionario, etc. .
Aquí hay un ejemplo de cómo crear un conjunto en Python:
num_set = {1, 2, 3, 4, 5, 6}  
print(num_set)  
Salida
{1, 2, 3, 4, 5, 6}
Acabamos de crear un conjunto de números. También podemos crear un conjunto de valores de cadena. Por ejemplo:
string_set = {"Nicholas", "Michelle", "John", "Mercy"}  
print(string_set)  
Salida
{'Michelle', 'Nicholas', 'John', 'Mercy'}
Debe haber notado que los elementos en la salida anterior no están ordenados de la misma manera que los agregamos al conjunto. La razón de esto es que los elementos establecidos no se ordenan. Si vuelve a ejecutar el mismo código, es posible que obtenga una salida con los elementos dispuestos en un orden diferente.
También podemos crear un conjunto con elementos de diferentes tipos. Por ejemplo:
mixed_set = {2.0, "Nicholas", (1, 2, 3)}  
print(mixed_set)  
Salida
{2.0, 'Nicholas', (1, 2, 3)}
Todos los elementos del conjunto anterior pertenecen a diferentes tipos.
También podemos crear un conjunto a partir de una lista. Esto se puede hacer llamando a la set()función incorporada de Python Por ejemplo:
num_set = set([1, 2, 3, 4, 5, 6])  
print(num_set)  
Salida
{1, 2, 3, 4, 5, 6}
Como se indicó anteriormente, los conjuntos no contienen elementos duplicados. Supongamos que nuestra lista tiene elementos duplicados, como se muestra a continuación:
num_set = set([1, 2, 3, 1, 2])  
print(num_set)  
Salida
{1, 2, 3}
El conjunto ha eliminado los duplicados y ha devuelto solo uno de cada elemento duplicado. Esto también sucede cuando estamos creando un conjunto desde cero. Por ejemplo:
num_set = {1, 2, 3, 1, 2}  
print(num_set)  
Salida
{1, 2, 3}
Nuevamente, el conjunto ha eliminado los duplicados y ha devuelto solo uno de los elementos duplicados.
La creación de un conjunto vacío es algo complicada. Si utiliza llaves vacías {}en Python, creará un diccionario vacío en lugar de un conjunto vacío. Por ejemplo:
x = {}  
print(type(x))  
Salida
<class 'dict'>  
Como se muestra en la salida, el tipo de variable xes un diccionario.
Para crear un conjunto vacío en Python debemos usar la set()función sin pasar ningún valor para los parámetros, como se muestra a continuación:
x = set()  
print(type(x))  
Salida
<class 'set'>  
La salida muestra que hemos creado un conjunto.

Acceso a los elementos establecidos

Python no nos proporciona una forma de acceder a un elemento de conjunto individual. Sin embargo, podemos usar un forbucle para recorrer en iteración todos los elementos de un conjunto. Por ejemplo:
months = set(["Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"])

for m in months:  
    print(m)
Salida
March  
Feb  
Dec  
Jan  
May  
Nov  
Oct  
Apr  
June  
Aug  
Sep  
July  
También podemos verificar la presencia de un elemento en un conjunto usando la inpalabra clave como se muestra a continuación:
months = set(["Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"])

print("May" in months)  
Salida
True  
El código devuelto "Verdadero", lo que significa que el elemento se encontró en el conjunto. De forma similar, la búsqueda de un elemento que no existe en el conjunto devuelve "Falso", como se muestra a continuación:
months = set(["Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"])

print("Nicholas" in months)  
Salida
False  
Como era de esperar, el código devuelto "Falso".

Agregar elementos a un conjunto

Python nos permite agregar nuevos elementos a un conjunto a través de la add()función. Por ejemplo:
months = set(["Jan", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"])

months.add("Feb")  
print(months)  
Salida
{'Oct', 'Dec', 'Feb', 'July', 'May', 'Jan', 'June', 'March', 'Sep', 'Aug', 'Nov', 'Apr'}
El elemento "Feb" se ha añadido correctamente al conjunto. Si se tratara de un conjunto de números, no habríamos pasado el nuevo elemento entre comillas, como teníamos que hacer para una cadena. Por ejemplo:
num_set = {1, 2, 3}  
num_set.add(4)  
print(num_set)  
Salida
{1, 2, 3, 4}
En la siguiente sección, discutiremos cómo eliminar elementos de conjuntos.

Eliminar elementos de un conjunto

Python nos permite eliminar un elemento de un conjunto, pero no usar un índice, ya que los elementos establecidos no están indexados. Los elementos pueden eliminarse utilizando los métodos discard()remove().
Tenga en cuenta que el discard()método no generará un error si el elemento no se encuentra en el conjunto. Sin embargo, si remove()se utiliza el método y no se encuentra el elemento, se generará un error.
Vamos a demostrar cómo eliminar un elemento utilizando el discard()método:
num_set = {1, 2, 3, 4, 5, 6}  
num_set.discard(3)  
print(num_set)  
Salida
{1, 2, 4, 5, 6}
El elemento 3 ha sido eliminado del conjunto.
Del mismo modo, el remove()método se puede utilizar de la siguiente manera:
num_set = {1, 2, 3, 4, 5, 6}  
num_set.remove(3)  
print(num_set)  
Salida
{1, 2, 4, 5, 6}
Ahora, intentemos eliminar un elemento que no existe en el conjunto. Primero usemos el discard()método:
num_set = {1, 2, 3, 4, 5, 6}  
num_set.discard(7)  
print(num_set)  
Salida
{1, 2, 3, 4, 5, 6}
La salida anterior muestra que el conjunto no se vio afectado de ninguna manera. Ahora veamos qué sucede cuando usamos el remove()método en el mismo escenario:
num_set = {1, 2, 3, 4, 5, 6}  
num_set.remove(7)  
print(num_set)  
Salida
Traceback (most recent call last):  
  File "C:\Users\admin\sets.py", line 2, in <module>
    num_set.remove(7)
KeyError: 7  
La salida muestra que el método generó un error al intentar eliminar un elemento que no está en el conjunto.
Con el pop()método, podemos eliminar y devolver un elemento. Dado que los elementos no están ordenados, no podemos decir o predecir el elemento que se eliminará. Por ejemplo:
num_set = {1, 2, 3, 4, 5, 6}  
print(num_set.pop())  
Salida
1  
Puede usar el mismo método para eliminar un elemento y devolver los elementos que permanecen en el conjunto. Por ejemplo:
num_set = {1, 2, 3, 4, 5, 6}  
num_set.pop()  
print(num_set)  
Salida
{2, 3, 4, 5, 6}
Esos son los elementos que quedan en el conjunto.
El clear()método de Python nos ayuda a eliminar todos los elementos de un conjunto. Por ejemplo:
num_set = {1, 2, 3, 4, 5, 6}  
num_set.clear()  
print(num_set)  
Salida
set()  
La salida es un vacío set()sin elementos en ella.

Establecer union

Supongamos que tenemos dos conjuntos, A y B. La unión de los dos conjuntos es un conjunto con todos los elementos de ambos conjuntos. Tal operación se realiza a través de la union()función de Python .
Aquí hay un ejemplo:
months_a = set(["Jan", "Feb", "March", "Apr", "May", "June"])  
months_b = set(["July", "Aug", "Sep", "Oct", "Nov", "Dec"])

all_months = months_a.union(months_b)  
print(all_months)  
Salida
{'Oct', 'Jan', 'Nov', 'May', 'Aug', 'Feb', 'Sep', 'March', 'Apr', 'Dec', 'June', 'July'}
Una unión también se puede realizar en más de dos conjuntos, y todos sus elementos se combinarán en un solo conjunto. Por ejemplo:
x = {1, 2, 3}  
y = {4, 5, 6}  
z = {7, 8, 9}

output = x.union(y, z)

print(output)  
Salida
{1, 2, 3, 4, 5, 6, 7, 8, 9}
Durante la operación de unión, los duplicados se ignoran y solo se muestra uno de los elementos duplicados. Por ejemplo:
x = {1, 2, 3}  
y = {4, 3, 6}  
z = {7, 4, 9}

output = x.union(y, z)

print(output)  
Salida
{1, 2, 3, 4, 6, 7, 9}
El |operador también se puede utilizar para encontrar la unión de dos o más conjuntos. Por ejemplo:
months_a = set(["Jan","Feb", "March", "Apr", "May", "June"])  
months_b = set(["July", "Aug", "Sep", "Oct", "Nov", "Dec"])

print(months_a | months_b)  
Salida
{'Feb', 'Apr', 'Sep', 'Dec', 'Nov', 'June', 'May', 'Oct', 'Jan', 'July', 'March', 'Aug'}
Si desea realizar una unión en más de dos conjuntos, separe los nombres de conjuntos con el |operador. Por ejemplo:
x = {1, 2, 3}  
y = {4, 3, 6}  
z = {7, 4, 9}

print(x | y | z)  
Salida
{1, 2, 3, 4, 6, 7, 9}

Establecer Intersección

Supongamos que tiene dos conjuntos A y B. Su intersección es un conjunto con elementos que son comunes tanto en A como en B.
La operación de intersección en conjuntos se puede lograr a través del &operador o del intersection()método. Por ejemplo:
Por ejemplo:
x = {1, 2, 3}  
y = {4, 3, 6}

print(x & y)  
Salida
{3}
Los dos conjuntos tienen 3 como elemento común. Lo mismo también se puede lograr con el intersection()método:
x = {1, 2, 3}  
y = {4, 3, 6}

z = x.intersection(y)  
print(z)  
Salida
{3}
En la siguiente sección, discutiremos cómo determinar la diferencia entre conjuntos.

Establecer la diferencia

Supongamos que tiene dos conjuntos A y B. La diferencia de A y B (A - B) es el conjunto con todos los elementos que están en A pero no en B. En consecuencia, (B - A) es el conjunto con todos los elementos en B pero no en A.
Para determinar las diferencias establecidas en Python, podemos usar la difference()función o el -operador. Por ejemplo:
set_a = {1, 2, 3, 4, 5}  
set_b = {4, 5, 6, 7, 8}  
diff_set = set_a.difference(set_b)  
print(diff_set)  
Salida
{1, 2, 3}
en el script anterior, solo los primeros tres elementos del conjunto set_ano están disponibles en el conjunto set_b, por lo que forman nuestra salida. El -operador menos también se puede usar para encontrar la diferencia entre los dos conjuntos como se muestra a continuación:
set_a = {1, 2, 3, 4, 5}  
set_b = {4, 5, 6, 7, 8}  
print(set_a - set_b)  
Salida
{1, 2, 3}
La diferencia simétrica de los conjuntos A y B es el conjunto con todos los elementos que están en A y B, excepto los elementos que son comunes en ambos conjuntos. Se determina utilizando el symmetric_difference()método de Python o el ^operador. Por ejemplo:
set_a = {1, 2, 3, 4, 5}  
set_b = {4, 5, 6, 7, 8}  
symm_diff = set_a.symmetric_difference(set_b)  
print(symm_diff)  
Salida
{1, 2, 3, 6, 7, 8}
La diferencia simétrica también se puede encontrar de la siguiente manera:
set_a = {1, 2, 3, 4, 5}  
set_b = {4, 5, 6, 7, 8}  
print(set_a ^ set_b)  
Salida
{1, 2, 3, 6, 7, 8}

Establecer comparación

Podemos comparar conjuntos en función de los elementos que tengan. De esta manera, podemos saber si un conjunto es un superconjunto o un subconjunto de otro conjunto. El resultado de tal comparación será TrueFalse.
Para verificar si el conjunto A es un subconjunto del conjunto B, podemos usar la siguiente operación:
A <= B  
Para verificar si B es un superconjunto de A, podemos usar la siguiente operación:
B >= A  
Por ejemplo:
months_a = set(["Jan", "Feb", "March", "Apr", "May", "June"])  
months_b = set(["Jan", "Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"])

subset_check = months_a <= months_b  
superset_check = months_b >= months_a

print(subset_check)  
print(superset_check)  
Salida
True  
True  
El subconjunto y superconjunto también se pueden verificar usando issubset()issuperset()métodos como se muestra a continuación:
months_a = set(["Jan","Feb", "March", "Apr", "May", "June"])  
months_b = set(["Jan","Feb", "March", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec"])

subset_check = months_a.issubset(months_b)  
superset_check = months_b.issuperset(months_a)

print(subset_check)  
print(superset_check)  
Salida
True  
True  
En la siguiente sección, analizaremos algunos de los métodos de conjuntos más comúnmente utilizados proporcionados por Python que aún no hemos discutido.

Establecer métodos

Python viene con numerosos métodos de conjuntos incorporados, que incluyen los siguientes:

dupdo()

Este método devuelve una copia del conjunto en cuestión. Por ejemplo:
string_set = {"Nicholas", "Michelle", "John", "Mercy"}  
x = string_set.copy()

print(x)  
Salida
{'John', 'Michelle', 'Nicholas', 'Mercy'}
La salida muestra que xes una copia del conjunto string_set.

isdisjoint ()

Este método verifica si los conjuntos en cuestión tienen una intersección o no. Si los conjuntos no tienen elementos comunes, este método devuelve True, de lo contrario, devuelve FalsePor ejemplo:
names_a = {"Nicholas", "Michelle", "John", "Mercy"}  
names_b = {"Jeff", "Bosco", "Teddy", "Milly"}

x = names_a.isdisjoint(names_b)  
print(x)  
Salida
True  
Los dos conjuntos no tienen elementos comunes, por lo tanto, la salida es True.

len ()

Este método devuelve la longitud de un conjunto, que es el número total de elementos en el conjunto. Por ejemplo:
names_a = {"Nicholas", "Michelle", "John", "Mercy"}

print(len(names_a))  
Salida
4  
La salida muestra que el conjunto tiene una longitud de 4.

Set Congelado Python

Frozenset es una clase con las características de un conjunto, pero una vez que sus elementos han sido asignados, no se pueden cambiar. Las tuplas se pueden ver como listas inmutables, mientras que los frozensets se pueden ver como conjuntos inmutables.
Los conjuntos son mutables e inestables, lo que significa que no podemos usarlos como claves de diccionario. Los frozensets son hashables y podemos usarlos como claves de diccionario.
Para crear frozensets, utilizamos el frozenset()método. Creemos dos frozensets, XY:
X = frozenset([1, 2, 3, 4, 5, 6])  
Y = frozenset([4, 5, 6, 7, 8, 9])

print(X)  
print(Y)  
Salida
frozenset({1, 2, 3, 4, 5, 6})  
frozenset({4, 5, 6, 7, 8, 9})  
Los frozensets apoyan el uso de Python establece métodos como copy()difference()symmetric_difference()isdisjoint()issubset()intersection()issuperset(), y union().

Conclusión

El artículo proporciona una introducción detallada a los conjuntos en Python. La definición matemática de conjuntos es la misma que la definición de conjuntos en Python. Un conjunto es simplemente una colección de artículos que no están ordenados. El conjunto en sí es mutable, pero los elementos del conjunto son inmutables. Sin embargo, podemos agregar y eliminar elementos de un conjunto libremente. En la mayoría de las estructuras de datos, los elementos están indexados. Sin embargo, los elementos establecidos no están indexados. Esto nos hace imposible realizar operaciones dirigidas a elementos de conjuntos específicos.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas