|
| 1 | +""" |
| 2 | + EJERCICIO: |
| 3 | + Utilizando tu lenguaje crea un conjunto de datos y realiza las siguientes |
| 4 | + operaciones (debes utilizar una estructura que las soporte): |
| 5 | + - Añade un elemento al final. |
| 6 | + - Añade un elemento al principio. |
| 7 | + - Añade varios elementos en bloque al final. |
| 8 | + - Añade varios elementos en bloque en una posición concreta. |
| 9 | + - Elimina un elemento en una posición concreta. |
| 10 | + - Actualiza el valor de un elemento en una posición concreta. |
| 11 | + - Comprueba si un elemento está en un conjunto. |
| 12 | + - Elimina todo el contenido del conjunto. |
| 13 | +
|
| 14 | + DIFICULTAD EXTRA (opcional): |
| 15 | + Muestra ejemplos de las siguientes operaciones con conjuntos: |
| 16 | + - Unión. |
| 17 | + - Intersección. |
| 18 | + - Diferencia. |
| 19 | + - Diferencia simétrica. |
| 20 | +""" |
| 21 | + |
| 22 | +print(f"## Explicación {'#' * 30}\n") |
| 23 | + |
| 24 | +print(f"""Un conjunto es una colección no ordenada de objetos únicos => no tiene índice, ni primero ni último. |
| 25 | +Se le pueden agregar elementos (método add), eliminar elementos (método remove) o eliminar TODOS los elementos (método clear). |
| 26 | +Un conjunto es iterable. |
| 27 | +Un conjunto vacío se puede crear con: "vacio = set()", PERO no con: "vacio = {{}}" <= lo cual crea un diccionario vacío. |
| 28 | +También se pueden crear asignando elementos directamente al conjunto: "numeros = {{1, 2, 3, 4, 5}}" |
| 29 | +Si al conjunto le pasamos elementos "repetidos", se filtrarán las repeteciones: "numeros = {{1, 2, 3, 1, 3}}" => queda como: "numeros = {{1, 2, 3}}" |
| 30 | +Tiene métodos para ejecutar operaciones de conjunto: intersection, union, issubset (incluído), issuperset (incluye), symmetric_difference (unión |
| 31 | +excluyente), etc, las cuales se pueden explorar con la función "dir(set())" |
| 32 | +""") |
| 33 | + |
| 34 | +cero = set() |
| 35 | +primos = set() |
| 36 | +no_primos = set() |
| 37 | + |
| 38 | +cero.add(0) |
| 39 | + |
| 40 | +primos.add(1) |
| 41 | +primos.add(2) |
| 42 | +primos.add(3) |
| 43 | +primos.add(5) |
| 44 | +primos.add(7) |
| 45 | + |
| 46 | +no_primos.add(4) |
| 47 | +no_primos.add(6) |
| 48 | +no_primos.add(8) |
| 49 | +no_primos.add(9) |
| 50 | + |
| 51 | +digitos = cero.union(primos).union(no_primos) |
| 52 | + |
| 53 | +print(f"Conjuntos:\n\tCero: {cero}\n\tPrimos: {primos}\n\tNo primos {no_primos}\n\tDígitos: {digitos}\n") |
| 54 | +print(f"Elementos comunes por intersección: {cero.intersection(primos).intersection(no_primos).__len__()}\n") |
| 55 | + |
| 56 | +digitos = digitos.union({2, 4, 5, 7, 11, 14, 15}) |
| 57 | +print(f"Agrego más números a digitos {digitos}\n") |
| 58 | +print("Subconjuntos:") |
| 59 | +print(f"\tPrimos está incluído en dígitos: {primos.issubset(digitos)}\n\tDígitos incluye no primos: {digitos.issuperset(no_primos)}") |
| 60 | +print("También podemos usar operadores:") |
| 61 | +print(f"\tPrimos está incluído en dígitos: {primos < digitos}\n\tDígitos incluye no primos: {no_primos < digitos}\n") |
| 62 | +print(f"Se puede crear un conjunto por comprehensión:") |
| 63 | +pares_mayores = set(x for x in digitos if (x > 9) and (x % 2 == 0)) |
| 64 | +impares_mayores = {x for x in digitos if (x > 9) and (x % 2 == 1)} |
| 65 | +print(f"\tPares mayores: {pares_mayores}\n\tImpares mayores: {impares_mayores}\n") |
| 66 | +print("Se puede itarar (recorro la union de los conjuntos pares e impoares mayores y los elimino de digitos):") |
| 67 | +for n in pares_mayores.union(impares_mayores): |
| 68 | + digitos.remove(n) |
| 69 | +print(f"\t{digitos}") |
| 70 | +print("\nElimino TODOS los elementos de pares e impares mayores:") |
| 71 | +pares_mayores = pares_mayores.clear() |
| 72 | +impares_mayores = impares_mayores.clear() |
| 73 | +print(f"\tpares_mayore = {pares_mayores}") |
| 74 | +print(f"\timpares_mayores = {impares_mayores}\n") |
| 75 | +print("Un conjunto puede ser inmutable: digitos = frozenset(digitos)") |
| 76 | +digitos = frozenset(digitos) |
| 77 | +try: |
| 78 | + digitos.add(10) |
| 79 | +except Exception as e: |
| 80 | + print(f"\t{e.__str__()}\n") |
| 81 | +print(f"Teniendo digitos = {digitos}, primos = {primos} y no_primos = {no_primos}") |
| 82 | +print(f"Intersección:\n\t{digitos.intersection(primos)}") |
| 83 | +print(f"Unión:\n\t{digitos.union(no_primos)}") |
| 84 | +print(f"Diferencia:\n\t{digitos.difference(primos)}") |
| 85 | +print(f"Unión exclusiva:\n\t{digitos.symmetric_difference(no_primos)}") |
| 86 | + |
| 87 | + |
| 88 | +print(f"\n## Dificultad extra {'#' * 30}\nIncluída en la explicación!!!") |
0 commit comments