Conjuntos en Python

    Introducción

    En Python, un conjunto es una estructura de datos que almacena elementos desordenados. Los elementos del conjunto tampoco están indexados. 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 del conjunto no están indexados, los conjuntos no admiten operaciones de segmentación o indexación.

    En este artículo, discutiremos las diversas operaciones que se pueden realizar en conjuntos en Python.

    Cómo crear un conjunto

    Hay dos formas de crear conjuntos en Python.

    Podemos crear un conjunto pasando todos los elementos del conjunto dentro de llaves {} y separe los elementos usando 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, diccionario, etc. .

    A continuación, se muestra 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 artículos del set no están ordenados. 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 al código integrado de Python set() función. 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 eliminó los duplicados y devolvió solo uno de cada elemento duplicado. Esto también sucede cuando creamos un conjunto desde cero. Por ejemplo:

    num_set = {1, 2, 3, 1, 2}
    print(num_set)
    

    Salida

    {1, 2, 3}
    

    Nuevamente, el conjunto eliminó los duplicados y devolvió solo uno de los elementos duplicados.

    La creación de un conjunto vacío es algo complicada. Si usa llaves vacías {} en Python, crea 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 x es un diccionario.

    Para crear un conjunto vacío en Python debemos usar el 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.

    Acceder a elementos del conjunto

    Python no nos proporciona una forma de acceder a un elemento de conjunto individual. Sin embargo, podemos usar un for bucle para recorrer 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 el in palabra 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 devolvió «Verdadero», lo que significa que el artículo se encontró en el conjunto. Del mismo modo, 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 se esperaba, el código devolvió «Falso».

    Agregar elementos a un conjunto

    Python nos permite agregar nuevos elementos a un conjunto a través del 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 fuera un conjunto de números, no habríamos pasado el nuevo elemento entre comillas como teníamos que hacer con 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 sin usar un índice, ya que los elementos del conjunto no están indexados. Los elementos se pueden eliminar utilizando el discard() o remove() métodos.

    Tenga en cuenta que el discard() El método no generará un error si el elemento no se encuentra en el conjunto. Sin embargo, si el remove() se utiliza el método y no se encuentra el elemento, se generará un error.

    Demostremos cómo eliminar un elemento usando 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 se ha eliminado del conjunto.

    Del mismo modo, el remove() El 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:Usersadminsets.py", line 2, in <module>
        num_set.remove(7)
    KeyError: 7
    

    El resultado muestra que el método generó un error cuando intentamos eliminar un elemento que no está en el conjunto.

    Con el pop() método, podemos eliminar y devolver un elemento. Dado que los elementos están desordenados, no podemos decir ni predecir el elemento que se eliminará. Por ejemplo:

    num_set = {1, 2, 3, 4, 5, 6}
    print(num_set.pop())
    

    Salida

    1
    

    Puede utilizar el mismo método para eliminar un elemento y devolver los elementos que quedan 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 Python clear() El método 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 él.

    Establecer unión

    Suponga 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 logra a través de Python union() función.

    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'}
    

    También se puede realizar una unión 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}
    

    los | 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 los conjuntos utilizando 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

    Suponga 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 mediante el & operador o el 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 diferencia

    Suponga 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 B pero no en A.

    Para determinar las diferencias de conjuntos en Python, podemos usar el difference() función o la - 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 guión anterior, solo los primeros tres elementos del conjunto set_a no están disponibles en el set set_b, por lo tanto, forman nuestra salida. El menos - El operador también se puede utilizar 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}
    

    los 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 Python symmetric_difference() método 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á True o False.

    Para comprobar si el conjunto A es un subconjunto del conjunto B, podemos usar la siguiente operación:

    A <= B
    

    Para comprobar 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 el superconjunto también se pueden comprobar utilizando issubset() y 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 utilizados proporcionados por Python que aún no hemos discutido.

    Establecer métodos

    Python viene con numerosos métodos de conjuntos integrados, incluidos los siguientes:

    Copiar()

    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 x es una copia del set string_set.

    isdisjoint ()

    Este método comprueba 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 vuelve False. Por 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 que la salida es True.

    len ()

    Este método devuelve la longitud de un conjunto, que es el número total de elementos del 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 Python Frozen

    Frozenset es una clase con las características de un conjunto, pero una vez asignados sus elementos, no se pueden modificar. Las tuplas pueden verse como listas inmutables, mientras que los conjuntos congelados pueden verse como conjuntos inmutables.

    Los conjuntos son mutables y no modificables, lo que significa que no podemos usarlos como claves de diccionario. Los Frozensets son hash y podemos usarlos como claves de diccionario.

    Para crear conjuntos congelados, usamos el frozenset() método. Creemos dos conjuntos congelados, X y Y:

    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 admiten el uso de métodos de conjunto de Python 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 del conjunto no están indexados. Esto hace que sea imposible para nosotros realizar operaciones que se dirijan a elementos específicos del conjunto.

     

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *