<jupyter_start><jupyter_text>[![imagenes](imagenes/pythonista.png)](https://pythonista.mx)  Objetos tipo ```set``` y ```frozenset```.Existen colecciones de objetos en Python que permiten realizar operaciones con conjuntos. Son una colección de objetos de valor único y no ordenados.Estos tipos de datos no son indexables y por lo tanto tampoco se pueden rebanar. Diagramas de Venn.Para ilustrar de mejor manera los conceptos relacionados con conjuntos se  utilizarán diagramas de Venn y su relación entre 2 conjuntos genéricos.![imagenes/conjuntos.png](imagenes/conjuntos.png)  Objetos tipo ```set```. Definición de un objeto tipo ```set```.Los elementos contenidos en un objeto tipo _set_ deben ser de de tipo inmutable.Los objetos tipo _set_ se definen mediante el uso de llaves ```{```, ```}```, pero a diferencia de los objetos de tipo ```dict```, sólo se ingresan una sucesión de objetos inmutables.```{, , ..., }```La función ```set()``` a la cual se le ingresa un objeto iterable.``` set()```**Ejemplos:**<jupyter_code>{1, 'dos', 3.0, '4'}
{2, 2., 1 + 1, "dos", '2'}
set({'id_1': 3, 'id_2': 4, 'id_3': 5, 'id_4': 6})
{[[12, 3, 27], [True, 60]]}
set([[12, 3, 27], [True, 60]])
{(12, 3, 27), (True, 60)}
set([(12, 3, 27), (True, 60)])<jupyter_output><empty_output><jupyter_text>Métodos del tipo _set_. Métodos de manipulación de objetos tipo set. _add()_.Añade un elemento que se ingresa como argumento al objeto tipo _set_. Si ya hay un objeto equivalente, no se agrega uno nuevo.**Ejemplos:**<jupyter_code>conjunto = {1, 'dos', 3.0, '4'}
conjunto
conjunto.add(True)
conjunto
conjunto.add(False)
conjunto<jupyter_output><empty_output><jupyter_text>_remove()_.Busca y elimina al elemento que se ingresa como argumento. En caso de no encontrarlo, envía un mensaje de error.**Ejemplos:**<jupyter_code>conjunto = {1, 'dos', 3.0, '4'}
conjunto.remove(True)
conjunto
conjunto.remove(3)<jupyter_output><empty_output><jupyter_text>_discard()_.Busca y elimina al elemento que se ingresa como argumento. En caso de no encontrarlo, regresa ```None```.**Ejemplos:**<jupyter_code>conjunto = {1, 'dos', 3.0, '4'}
conjunto.discard(3)
conjunto
conjunto.discard(3)<jupyter_output><empty_output><jupyter_text>_pop()_.Regresas y elimina un elemento del objeto tipo _set_. Cuando ya no existen elementos, se generan un error de tipo _KeyError_**Ejemplos:**<jupyter_code>conjunto = {1, 'dos', 3.0, '4'}
conjunto
conjunto.pop()
conjunto
conjunto.pop()
conjunto
conjunto.pop()
conjunto
conjunto.pop()
conjunto
conjunto.pop()<jupyter_output><empty_output><jupyter_text>_copy()_.Regresa una copia exacta del objeto contenido en el objeto tipo _set_. Es similar al rebanado completo de los objetos tipo _list_.**Ejemplo:**<jupyter_code>conjunto = {1, 'dos', 3.0, '4'}
otro_conjunto = conjunto.copy()
otro_conjunto
id(conjunto)
id(otro_conjunto)
otro_conjunto == conjunto
otro_conjunto is conjunto<jupyter_output><empty_output><jupyter_text>_clear()_.Elimina todos los elementos del objeto tipo _set_.**Ejemplo:**<jupyter_code>{1, 'dos', 3.0, '4'}
conjunto
conjunto.clear()
conjunto<jupyter_output><empty_output><jupyter_text>Métodos de evaluación de conjuntos.**Nota:** Los diagramas de Venn ilustran los casos en los que la evaluación da por resultado _True_. _isdisjoint()_.Evalúa si dos conjuntos no se intersectan. Si no existen elementos compartidos entre el objeto tipo _set_ al que pertenece el método y el objeto _set_ que se ingresa  como argumento, se regresa el valor _True_. De lo contrario se regresa _False_.![imagenes/isdisjoint.png](imagenes/isdisjoint.png)**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_c = {5, 6, 7}
conjunto_a.isdisjoint(conjunto_b)
conjunto_a.isdisjoint(conjunto_c)<jupyter_output><empty_output><jupyter_text>_issubset()_.Si el objeto tipo _set_ al que pertenece el método es subconjunto del objeto _set_ que se ingresa como argumento, se regresa el valor _True_. De lo contrario se regresa _False_.![imagenes/issubset.png](imagenes/issubset.png)**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {1, 2, 4}
conjunto_c = {1}
conjunto_a.issubset(conjunto_b)
conjunto_b.issubset(conjunto_a)
conjunto_c.issubset(conjunto_a)<jupyter_output><empty_output><jupyter_text>_issuperset()_.Si el objeto tipo _set_ que se ingresa como argumento es subconjunto del objeto tipo _set_ al que pertenece el método, se regresa el valor _True_. De lo contrario se regresa _False_.![imagenes/issuperset.png](imagenes/issuperset.png)**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {1, 2, 4}
conjunto_c = {1}
conjunto_a.issuperset(conjunto_b)
conjunto_b.issuperset(conjunto_a)
conjunto_c.issuperset(conjunto_a)
conjunto_b.issuperset(conjunto_c)<jupyter_output><empty_output><jupyter_text>Métodos de operaciones con conjuntos. _union()_.Regresa el resultado de la unión del objeto tipo _set_ al que pertenece el método y el objeto tipo _set_ que se ingresa como argumento.![imagenes/union.png](imagenes/union.png)**Ejemplo:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_c = {5, 6, 7}
conjunto_a.union(conjunto_b)
conjunto_a.union(conjunto_c)<jupyter_output><empty_output><jupyter_text>_update()_.Sustituye al objeto tipo _set_ con el resultado de la unión de dicho objeto con el objeto tipo _set_ que se ingresa como argumento.**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_c = {5, 6, 7}
id(conjunto_a)
conjunto_a.update(conjunto_b)
conjunto_a
id(conjunto_a)
conjunto_a.update(conjunto_c)
conjunto_a<jupyter_output><empty_output><jupyter_text>_difference()_.Regresa el resultado de la diferencia entre el objeto tipo _set_ al que pertenece el método y el objeto tipo _set_ que se ingresa como argumento.![imagenes/difference.png](imagenes/difference.png)**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_c = {5, 6, 7}
conjunto_a.difference(conjunto_b)
conjunto_a.difference(conjunto_c)
conjunto_b.difference(conjunto_c)
conjunto_c.difference(conjunto_b)<jupyter_output><empty_output><jupyter_text>*difference\_update()*.Sustituye al objeto tipo _set_ al que pertenece el método con la diferencia entre dicho objeto y el objeto tipo _set_ que se ingresa como argumento.**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_a.difference_update(conjunto_b)
conjunto_a<jupyter_output><empty_output><jupyter_text>*intersection()*.Regresa el resultado de la intersección entre el objeto tipo _set_ al que pertenece el método y el objeto tipo _set_ que se ingresa como argumento.![imagenes/intersection.png](imagenes/intersection.png)**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_a.intersection(conjunto_b)<jupyter_output><empty_output><jupyter_text>*intersection_update()*.Sustituye al objeto tipo _set_ al que pertenece el método con la intersección entre dicho objeto y el objeto tipo _set_ que se ingresa como argumento.**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_a.intersection_update(conjunto_b)
conjunto_a<jupyter_output><empty_output><jupyter_text>*symmetric\_difference()*.Regresa el resultado de la diferencia simétrica entre el objeto tipo _set_ al que pertenece el método y el objeto tipo _set_ que se ingresa como argumento.![imagenes/symmetric_difference.png](imagenes/symmetric_difference.png)**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_a.symmetric_difference(conjunto_b)<jupyter_output><empty_output><jupyter_text>*symmetric\_difference\_update()*.Sustituye al objeto tipo _set_ al que pertenece el método con la diferencia simétrica entre dicho objeto y el objeto tipo _set_ que se ingresa como argumento.**Ejemplos:**<jupyter_code>conjunto_a = {1, 2, 3, 4}
conjunto_b = {3, 4, 5, 6}
conjunto_a.symmetric_difference_update(conjunto_b)
conjunto_a<jupyter_output><empty_output><jupyter_text>Objetos tipo _frozenset_.Los objetos de tipo frozenset representan conjuntos inmutables. Definición de un objeto tipo _frozenset_.Los objetos tipo _frozenset_ se definen mediante la función _frozenset()_ a la cual se le ingresa un objeto iterable.``` frozenset()```**Ejemplo:**<jupyter_code>frozenset([1, 'dos', 3.0, '4'])
frozenset({2, 2., 1 + 1, "dos"})
frozenset({'id_1': 3, 'id_2': 4, 'id_3': 5, 'id_4': 6})<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12137486573576799, 'fraction_numerical': 0.022556390977443608, 'mean_word_length': 6.928098391674551, 'pattern_counts': {'":': 0, '<': 77, '<?xml version=': 0, '>': 77, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '19', 'dir': 'jupyter-structured-clean-dedup', 'id': '185930', 'license': 'MIT', 'n_tokens_mistral': 3501, 'n_tokens_neox': 3329, 'n_words': 861, 'path': '21_tipos_set_y_frozenset.ipynb', 'repo_name': 'hecrap1/clone_pythonist', 'size': '8379'}