Un conjunto es un tipo de datos de colección desordenada que es iterable, mutable y no tiene elementos duplicados.
El conjunto se define en { }
La principal ventaja de usar un conjunto, a diferencia de una lista, es que tiene un método altamente optimizado para verificar si un elemento específico está contenido en el conjunto. Esto se basa en una estructura de datos conocida como tabla hash . Dado que los conjuntos no están ordenados, no podemos acceder a los elementos mediante índices como lo hacemos en las listas .
Ejemplos de conjuntos
Python3
var = {"Geeks", "for", "Geeks"} type(var)
Producción:
set
Los métodos set() se utilizan para la conversión de tipos en Python.
Python3
# Python program to # demonstrate sets # Same as {"a", "b", "c"} myset = set(["a", "b", "c"]) print(myset) # Adding element to the set myset.add("d") print(myset)
{'c', 'b', 'a'} {'d', 'c', 'b', 'a'}
Conjuntos congelados de Python
Los conjuntos congelados en Python son objetos inmutables que solo admiten métodos y operadores que producen un resultado sin afectar el conjunto o conjuntos congelados a los que se aplican. Se puede hacer con el método frozenset() en Python.
Si bien los elementos de un conjunto se pueden modificar en cualquier momento, los elementos del conjunto congelado siguen siendo los mismos después de la creación.
Si no se pasan parámetros, devuelve un conjunto congelado vacío.
Python
# Python program to demonstrate differences # between normal and frozen set # Same as {"a", "b","c"} normal_set = set(["a", "b","c"]) print("Normal Set") print(normal_set) # A frozen set frozen_set = frozenset(["e", "f", "g"]) print("\nFrozen Set") print(frozen_set) # Uncommenting below line would cause error as # we are trying to add element to a frozen set # frozen_set.add("h")
Normal Set set(['a', 'c', 'b']) Frozen Set frozenset(['e', 'g', 'f'])
Funcionamiento interno de Set
Esto se basa en una estructura de datos conocida como tabla hash .
Si hay varios valores presentes en la misma posición de índice, el valor se agrega a esa posición de índice para formar una lista enlazada. En Python, los conjuntos se implementan utilizando un diccionario con variables ficticias, donde la clave es el conjunto de miembros con mayores optimizaciones a la complejidad del tiempo.
Establecer implementación:
Conjuntos con Numerosas operaciones en una sola HashTable:
Métodos para conjuntos
Agregar elementos
La inserción en el conjunto se realiza a través de la función set.add(), donde se crea un valor de registro apropiado para almacenar en la tabla hash. Igual que verificar un artículo, es decir, O(1) en promedio. Sin embargo, en el peor de los casos puede convertirse en O(n).
Python3
# A Python program to # demonstrate adding elements # in a set # Creating a Set people = {"Jay", "Idrish", "Archi"} print("People:", end = " ") print(people) # This will add Daxit # in the set people.add("Daxit") # Adding elements to the # set using iterator for i in range(1, 6): people.add(i) print("\nSet after adding element:", end = " ") print(people)
People: {'Idrish', 'Archi', 'Jay'} Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}
Unión
Se pueden fusionar dos conjuntos usando la función union() o | operador. Se accede a ambos valores de la tabla hash y se recorren con la operación de fusión realizada en ellos para combinar los elementos, al mismo tiempo que se eliminan los duplicados. La complejidad temporal de esto es O (len (s1) + len (s2)) donde s1 y s2 son dos conjuntos cuya unión debe realizarse.
Python3
# Python Program to # demonstrate union of # two sets people = {"Jay", "Idrish", "Archil"} vampires = {"Karan", "Arjun"} dracula = {"Deepanshu", "Raju"} # Union using union() # function population = people.union(vampires) print("Union using union() function") print(population) # Union using "|" # operator population = people|dracula print("\nUnion using '|' operator") print(population)
Union using union() function {'Karan', 'Idrish', 'Jay', 'Arjun', 'Archil'} Union using '|' operator {'Deepanshu', 'Idrish', 'Jay', 'Raju', 'Archil'}
Intersección
Esto se puede hacer a través de la intersection() o el operador &. Se seleccionan elementos comunes. Son similares a la iteración sobre las listas Hash y la combinación de los mismos valores en ambas tablas. La complejidad temporal de esto es O(min(len(s1), len(s2)) donde s1 y s2 son dos conjuntos cuya unión debe hacerse.
Python3
# Python program to # demonstrate intersection # of two sets set1 = set() set2 = set() for i in range(5): set1.add(i) for i in range(3,9): set2.add(i) # Intersection using # intersection() function set3 = set1.intersection(set2) print("Intersection using intersection() function") print(set3) # Intersection using # "&" operator set3 = set1 & set2 print("\nIntersection using '&' operator") print(set3)
Intersection using intersection() function {3, 4} Intersection using '&' operator {3, 4}
Diferencia
Para encontrar la diferencia entre conjuntos. Similar a encontrar la diferencia en la lista enlazada. Esto se hace a través del operador difference() o –. La complejidad temporal de encontrar la diferencia s1 – s2 es O(len(s1))
Python3
# Python program to # demonstrate difference # of two sets set1 = set() set2 = set() for i in range(5): set1.add(i) for i in range(3,9): set2.add(i) # Difference of two sets # using difference() function set3 = set1.difference(set2) print(" Difference of two sets using difference() function") print(set3) # Difference of two sets # using '-' operator set3 = set1 - set2 print("\nDifference of two sets using '-' operator") print(set3)
Difference of two sets using difference() function {0, 1, 2} Difference of two sets using '-' operator {0, 1, 2}
Juegos de compensación
El método Clear() vacía todo el conjunto.
Python3
# Python program to # demonstrate clearing # of set set1 = {1,2,3,4,5,6} print("Initial set") print(set1) # This method will remove # all the elements of the set set1.clear() print("\nSet after using clear() function") print(set1)
Initial set {1, 2, 3, 4, 5, 6} Set after using clear() function set()
Sin embargo, hay dos problemas principales en los conjuntos de Python:
- El conjunto no mantiene los elementos en ningún orden en particular.
- Solo se pueden agregar instancias de tipos inmutables a un conjunto de Python.
Complejidad temporal de conjuntos
Operación | Caso promedio | Peor de los casos | notas |
---|---|---|---|
x en s | O(1) | En) | |
unión s|t | O(largo(s)+largo(t)) | ||
Intersección s&t | O(mín(largo(s), largo(t)) | O(largo(s) * largo(t)) | reemplace «min» con «max» si t no es un conjunto |
Intersección múltiple s1&s2&..&sn | (n-1)*O(l) donde l es max(len(s1),..,len(sn)) | ||
Punto de diferencia | O(largo(s)) |
Operadores para conjuntos
Los conjuntos y los conjuntos congelados admiten los siguientes operadores:
Operadores | notas |
---|---|
clave en s | verificación de contención |
clave no en s | verificación de no contención |
s1 == s2 | s1 es equivalente a s2 |
s1 != s2 | s1 no es equivalente a s2 |
s1 <= s2 | s1 es un subconjunto de s2 |
s1 < s2 | s1 es un subconjunto propio de s2 |
s1 >= s2 | s1 es superconjunto de s2 |
s1 > s2 | s1 es el superconjunto propio de s2 |
s1 | s2 | la unión de s1 y s2 |
s1 y s2 | la intersección de s1 y s2 |
s1-s2 | el conjunto de elementos en s1 pero no en s2 |
s1 s2 | el conjunto de elementos en precisamente uno de s1 o s2 |
Fragmento de código para ilustrar todas las operaciones Set en Python
Python
# Python program to demonstrate working# of # Set in Python # Creating two sets set1 = set() set2 = set() # Adding elements to set1 for i in range(1, 6): set1.add(i) # Adding elements to set2 for i in range(3, 8): set2.add(i) print("Set1 = ", set1) print("Set2 = ", set2) print("\n") # Union of set1 and set2 set3 = set1 | set2# set1.union(set2) print("Union of Set1 & Set2: Set3 = ", set3) # Intersection of set1 and set2 set4 = set1 & set2# set1.intersection(set2) print("Intersection of Set1 & Set2: Set4 = ", set4) print("\n") # Checking relation between set3 and set4 if set3 > set4: # set3.issuperset(set4) print("Set3 is superset of Set4") else if set3 < set4: # set3.issubset(set4) print("Set3 is subset of Set4") else : # set3 == set4 print("Set3 is same as Set4") # displaying relation between set4 and set3 if set4 < set3: # set4.issubset(set3) print("Set4 is subset of Set3") print("\n") # difference between set3 and set4 set5 = set3 - set4 print("Elements in Set3 and not in Set4: Set5 = ", set5) print("\n") # check if set4 and set5 are disjoint sets if set4.isdisjoint(set5): print("Set4 and Set5 have nothing in common\n") # Removing all the values of set5 set5.clear() print("After applying clear on sets Set5: ") print("Set5 = ", set5)
('Set1 = ', set([1, 2, 3, 4, 5])) ('Set2 = ', set([3, 4, 5, 6, 7])) ('Union of Set1 & Set2: Set3 = ', set([1, 2, 3, 4, 5, 6, 7])) ('Intersection of Set1 & Set2: Set4 = ', set([3, 4, 5])) Set3 is superset of Set4 Set4 is subset of Set3 ('Elements in Set3 and not in Set4: Set5 = ', set([1, 2, 6, 7])) Set4 and Set5 have nothing in common After applying clear on sets Set5: ('Set5 = ', set([]))
Artículos recientes sobre Python Set.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA