in

Conjuntos en Python – GeeksforGeeks

gfg 200x200 min

Un conjunto es un tipo de datos de colección desordenado que es iterable, mutable y no tiene elementos duplicados. La clase de conjunto de Python representa la noción matemática de un conjunto. 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 están desordenados, no podemos acceder a los elementos usando índices como lo hacemos en las listas.

 

myset = set(["a", "b", "c"])

print(myset)

 

myset.add("d")

print(myset)

Producción:
{'c', 'b', 'a'}
{'d', 'c', 'b', 'a'}

Conjuntos congelados

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. 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 pasa ningún parámetro, devuelve un conjunto frozenset vacío.

 

normal_set = set(["a", "b","c"])

 

print("Normal Set")

print(normal_set)

 

frozen_set = frozenset(["e", "f", "g"])

 

print("nFrozen Set")

print(frozen_set)

 

Producción:
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 vinculada. En, los Conjuntos de Python se implementan mediante diccionario con variables ficticias, donde la clave comienza con los miembros establecidos con mayores optimizaciones a la complejidad del tiempo.

Implementación del conjunto: –

HashTable

Conjuntos con numerosas operaciones en una sola HashTable: –

Hasing Python

Métodos para conjuntos

Agregar elementos

La inserción en el conjunto se realiza mediante la función set.add (), donde se crea un valor de registro apropiado para almacenarlo en la tabla hash. Igual que comprobar si hay un artículo, es decir, O (1) en promedio. Sin embargo, en el peor de los casos, puede convertirse en O (n).

 

people = {"Jay", "Idrish", "Archi"}

 

print("People:", end = " ")

print(people)

 

people.add("Daxit")

 

for i in range(1, 6): 

    people.add(i) 

 

print("nSet after adding element:", end = " ")

print(people)

Producción:
People: {'Idrish', 'Archi', 'Jay'}

Set after adding element: {1, 2, 3, 4, 5, 'Idrish', 'Archi', 'Jay', 'Daxit'}

Unión

Se pueden combinar 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 combinación que se realiza 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.

 

people = {"Jay", "Idrish", "Archil"}

vampires = {"Karan", "Arjun"}

dracula = {"Deepanshu", "Raju"}

 

population = people.union(vampires)

 

print("Union using union() function")

print(population)

 

population = people|dracula

 

print("nUnion using '|' operator")

print(population)

Producción:
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 intersección () o el operador &. Se seleccionan los 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 realizarse.

 

set1 = set()

set2 = set()

 

for i in range(5):

    set1.add(i)

 

for i in range(3,9):

    set2.add(i)

 

set3 = set1.intersection(set2)

 

print("Intersection using intersection() function")

print(set3)

 

set3 = set1 & set2

 

print("nIntersection using '&' operator")

print(set3)

Producción:
Intersection using intersection() function
{3, 4}

Intersection using '&' operator
{3, 4}

Diferencia

Para encontrar diferencias entre conjuntos. Similar para encontrar la diferencia en la lista vinculada. Esto se hace mediante diferencia () o – operador. La complejidad del tiempo de encontrar la diferencia s1 – s2 es O (len (s1))

 

set1 = set()

set2 = set()

 

for i in range(5):

    set1.add(i)

 

for i in range(3,9):

    set2.add(i)

 

set3 = set1.difference(set2)

 

print(" Difference of two sets using difference() function")

print(set3)

 

set3 = set1 - set2

 

print("nDifference of two sets using '-' operator")

print(set3)

Producción:
Difference of two sets using difference() function
{0, 1, 2}

Difference of two sets using '-' operator
{0, 1, 2}

Juegos de compensación

Clear() El método vacía todo el conjunto.

 

set1 = {1,2,3,4,5,6}

 

print("Initial set")

print(set1)

 

set1.clear()

 

print("nSet after using clear() function")

print(set1)

Producción:
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:

  1. El conjunto no mantiene elementos en ningún orden en particular.
  2. Solo se pueden agregar instancias de tipos inmutables a un conjunto de Python.

Complejidad temporal de conjuntos

Operación Caso medio Peor de los casos notas
x en s O (1) Sobre)
Unión s | t O (len (s) + len
(‘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.

Este artículo es una contribución de Jay Patel. Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo a contrib@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema discutido anteriormente.

¡Atención geek! Fortalece tus cimientos con el Fundación de programación de Python Curso y aprende los conceptos básicos.

Para empezar, los preparativos de su entrevista Mejore sus conceptos de estructuras de datos con el Python DS Curso. Y para comenzar con su viaje de aprendizaje automático, únase al Aprendizaje automático – Curso de nivel básico

Deja una respuesta

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

apple touch icon@2

git – ¿Cuál es la diferencia entre GitHub y gist?

edit

A menos que vs hasta – Diferencia y comparación