Danelia Sanchez Sanchez
Roberto Sobarzo
Manuel Alejandro Aguilar Téllez Girón
Aprende a dominar tuplas y sets en Python con ejemplos claros y prácticos. Verás cómo declararlos, cómo acceder a sus elementos, qué implica su inmutabilidad y cómo aplicar operaciones de teoría de conjuntos como intersección, unión y diferencia. Además, conocerás los únicos métodos públicos de las tuplas: count e index.
¿Cómo declarar y usar tuplas en Python?
Las tuplas se pueden declarar separando valores por comas o usando paréntesis. Funcionan como secuencias: permiten acceso por índice iniciando en cero. Son ideales cuando necesitas una colección constante que no cambiará.
¿Cómo se declaran las tuplas?
a = 1, 2, 3 print(type(a)) # <class 'tuple'> a = (1, 2, 3) print(type(a)) # <class 'tuple'>
print(a[0]) # 1 print(a[1]) # 2 # La tercera posición está fuera del rango de esta tupla.
¿Qué implica la inmutabilidad en tuplas y strings?
a = (1, 2, 3) a[0] = 10 # TypeError: tuple object does not support item assignment
¿Qué hacen los métodos count e index?
a = (1, 1, 1, 2, 3) print(a.count(1)) # 3 print(a.count(2)) # 1 print(a.index(1)) # 0 print(a.index(3)) # 4
¿Cómo crear y operar con sets en Python?
Los sets son colecciones sin orden implícito y sin duplicados. No permiten acceso por índice, pero ofrecen operaciones de conjuntos y métodos como add y remove. Son perfectos para verificar pertenencia y combinar elementos únicos.
¿Cómo se declaran los sets?
set a partir de un iterable.{} listando elementos únicos.A = set([1, 2, 3]) # a partir de una lista B = {3, 4, 5} # notación con llaves print(type(A), type(B)) # <class 'set'> <class 'set'>
¿Por qué no hay índice ni duplicados?
A.add(3) # no cambia: 3 ya existe A.add(20) # se agrega 20 print(A) # {1, 2, 3, 20}
¿Qué operaciones de conjuntos aplican?
A = {1, 2, 3, 20} B = {3, 4, 5} print(A.intersection(B)) # {3} print(A.union(B)) # {1, 2, 3, 4, 5, 20} print(A.difference(B)) # {1, 2, 20} print(B.difference(A)) # {4, 5} A.remove(20) print(A) # {1, 2, 3}
¿Tienes preguntas o quieres compartir tus pruebas con tuplas y sets? Deja tu comentario y la comunidad te ayudará.
Danelia Sanchez Sanchez
Roberto Sobarzo
Manuel Alejandro Aguilar Téllez Girón
Ingrid Natalia Rodriguez Ovalle
Francisco Garcia [C6]
Omar Daniel Centeno
Mario Barbero Santillán
Jorge Cabrera Moreno
Juan Carlos Pinzón
David Camilo Latorre Monroy
Juan Mercado
Sergio Ivan Galvis Motoa
Osvaldo Trejo
David Behar
Marcelo Sánchez
Cesar Hernández Ramírez
Jann Haider Ramos Andrade
Omar Daniel Centeno
Wilson Fernando Antury Torres
Omar Daniel Centeno
Luis Fernando Zarazua Aguilar
Omar Daniel Centeno
David Jonatan Mora Bejarano
Rhonal Velasco
Facundo Nicolás García Martoni
ProfesorByron Campo Zuñiga
Ivan -
Mauricio Gonzalez Falcon
Ricardo Arango Giraldo
Anthony Pernia
victor hugo quintanilla
Jeyson David Vargas Crespo
Ricardo Rito Anguiano
Jorge Hernandez Rozo
Manuel Mosquera
Cesar Hernández Ramírez
Perla Godinez Castillo
Miguel Andres Rendon Reyes
Alan Torres
Operadores para sets en Python:
>>> A = {1, 2, 3} # conjunto A >>> B = {3, 4 ,5} # conjunto B >>> A | B #unión {1, 2, 3, 4, 5} >>> A & B # intersección {3} >>> A - B # diferencia entre A y B {1, 2} >>> B - A # diferencia entre B y A {4, 5}
Gracias!!
Cool, super gracias!!!
Declaracion de tuplas a= 1,2,3 a=(1,2,3) ++Operaciones con tuplas:++ Acceder a un valor mediante indice de tupla a[0]=1 Conteo de cuantas veces está un valor en la tupla a.count(1)—>1
Declaración conjutos o Sets a= set([1,2,3]) a={1,2,3} ++Operaciones con conjuntos:++
Tenemos: a={1,2,3,20} b={3,4,5} a.intersection(b)–> {3} (elementos en común) a.union(b)—>{1,2,3,20,4,5} (elementos de a + b pero sin repetir ninguno) a.difference(b)–>{1,2,20} (elementos de a que no se encuentran en b) b.difference(a)–>{4,5} (elementos de b que no se encuentran en a)
Gracias por el resumen
buen resumen
""" ------ TUPLAS ------ Las tuplas (tuples) son similares a las listas. La unica diferencia es que las tuplas son inmutables. La diferencia con los strings es que pueden recibir muchos tipos valores. Son una serie de valores separados por comas, casi siempre se le agregan paréntesis para que sea mucho más legible. tup = 1,2,3 tup = (1,2,3)-->Esta opción es la más se utiliza Para poderla inicializar utilizamos la función 'tuple'. Un uso muy común es utilizarlas para regresar más de un valor en una función. return (students,teachers) ------ CONJUNTOS ------ Los conjuntos (sets) son una colección sin orden que no permite elementos duplicados. A diferencia de los tuples podemos agregar y eliminar, son mutables. Los sets se inicializan con la función 'set'. Para añadir elementos utilizamos el método 'add' y para eliminarlos utilizamos el método 'remove' """ ## LISTA --> ages = [12,18,24,34,50] ## TUPLA --> ages = (12,18,24,34,50) ## CONJUNTOS --> ages = {12,18,24,34,50} """Con las tuplas que pueden utilizar casi todas las (las mismas) funciones y métodos que funcionan con las listas""" ##------ TUPLAS ------ a = (1,2,2,3) b = (3,4,5) c = b+a print(c) print(a.count(2)) ## Nos dice cuantas veces aparece el numero 2 en la tupla print(b.index(4)) ## NOs dice en que posición aparece por primera el numero 4 en la tupla ##Esto no lo podemos hacer porque son inmutables, al contrario que las listas, que son mutables ##a[1]= 10 ##c[2] = 22 ##------ CONJUNTOS ------ # Creando un conjunto en python print('-'*30) A = {1,2,3} print(A) # Creando un conjunto a partir de una lista print('-'*30) lista = ["bananas", "manzanas", "naranjas", "limones"] B = set(lista) print(B) # Los conjuntos eliminan los elementos duplicados print('-'*30) lista = ["bananas", "manzanas", "naranjas", "limones", "bananas", "bananas", "limones", "naranjas"] B = set(lista) print(B) # Creando el conjunto vacío print('-'*30) C = set() print(C) # Cardinalidad de un conjunto con len(). print('-'*30) print("La cardinalidad del conjunto A = {0} es {1}".format(A,len(A))) # comprobando membresía print('-'*30) print(2 in A) print(0 in A) # Igualdad entre conjuntos. El orden de los elementos no importa. print('-'*30) A = {1,2,3,4} B = {4,2,3,1} print(A == B) # Subconjunto. No hay distincion entre subconjunto y propio # para el conjunto por defecto de python. print('-'*30) A = {1,2,3} B = {1,2,4,3,5} """issubset() busca si los valores de A están en B, sin importar el orden""" print(A.issubset(B)) # Union de conjuntos. Omite los valores repetidos print('-'*30) A = {1,2,3,4,5} B = {4,5,6,7,8,9,10} print(A.union(B)) # Intersección de conjuntos, es decir, los valores que se repiten print('-'*30) print(A.intersection(B)) # Diferencia entre conjuntos print('-'*30) print(A.difference(B)) print(B.difference(A)) print(A - B) print(B - A) ##------ Utilizando sympy ------- # Utilizando FiniteSet de sympy """Para que el import no de error, abrir el power shell como admin en la carpeta donde este el archivo (en mi caso, que utilizo el sublime text 3) o si ejecutais desde el interprete por consola, en ambos casos teneis que poner pip install sympy""" print('-'*30) from sympy import FiniteSet C = FiniteSet(1, 2, 3) print(C) # Generando el conjunto potencia. Esto no se puede # hacer utilizando el conjunto por defecto de python. print('-'*30) print(C.powerset()) # Cardinalidad print('-'*30) print("La cardinalidad del conjunto potencia del conjunto C = {0} es {1}". format(C, len(C.powerset()))) # Igualdad print('-'*30) A = FiniteSet(1, 2, 3) B = FiniteSet(1, 3, 2) print(A == B) A = FiniteSet(1, 2, 3) B = FiniteSet(1, 3, 4) print(A == B) # Subconjunto y subconjunto propio print('-'*30) A = FiniteSet(1,2,3) B = FiniteSet(1,2,3,4,5) print(A.is_subset(B)) # A == B. El test de subconjunto propio da falso print('-'*30) B = FiniteSet(2,1,3) print(A.is_proper_subset(B)) # Union de dos conjuntos print('-'*30) A = FiniteSet(1, 2, 3) B = FiniteSet(2, 4, 6) print(A.union(B)) # Interseccion de dos conjuntos print('-'*30) A = FiniteSet(1, 2) B = FiniteSet(2, 3) print(A.intersect(B)) # Diferencia entre conjuntos print('-'*30) print(A - B) # Calculando el producto cartesiano. Con el conjunto por # defecto de python no podemos hacer esto con el operador * print('-'*30) A = FiniteSet(1, 2) B = FiniteSet(3, 4) P = A * B print(P) for elem in P: print(elem) # Elevar a la n potencia un conjunto. Calcula el n # producto cartesiano del mismo conjunto. print('-'*30) A = FiniteSet(1, 2, 3, 4) P2 = A ** 2 print(P2) P3 = A ** 3 print(P3) for elem in P3: print(elem) # Dibujanto el diagrama de venn de 2 conjuntos """Para que el import no de error, abrir el power shell como admin en la carpeta donde este el archivo (en mi caso, que utilizo el sublime text 3) o si ejecutais desde el interprete por consola, en ambos casos teneis que poner pip install 'matplotlib' y ' pip install matplotlib_venn'""" print('-'*30) from matplotlib_venn import venn2, venn2_circles import matplotlib.pyplot as plt print(dir(plt)) A = FiniteSet(1, 3, 5, 7, 9, 11, 13, 15, 17, 19) B = FiniteSet(2, 3, 5, 7, 11, 13, 17, 19, 8) plt.figure(figsize=(10, 8)) v = venn2(subsets=[A, B], set_labels=('A', 'B')) v.get_label_by_id('10').set_text(A - B) v.get_label_by_id('11').set_text(A.intersection(B)) v.get_label_by_id('01').set_text(B - A) c = venn2_circles(subsets=[A, B], linestyle='dashed') c[0].set_ls('solid') plt.show()
Creo que sería buena idea ir haciendo perqueños proyectos
en cada clase, simplemente para facilitar un tema en específico.
Se ha estado haciendo un proyecto completo en el cual se han aplicado los conceptos vistos
@juanpinzon, se refiere a un micro proyecto en cada concepto para afianzarlo más aun, luego sí aplicarlo al proyecto general, estoy de acuerdo, se va muy, muy rápido y siento vacios en los conceptos que he tenido que afianzar con cursos de python de otras plataformas.
Un dato interesante.
Para realizar la suma de 2 conjuntos podemos utilizar " | ". Ej:
a = {1,2,3} b = {3,4,5} c = a | b print(c) {1,2,3,4,5}
Se puede decir que la suma, es la unión de los conjuntos.
Set o conjuntos
Podemos determinar si un numero esta dentro de un conjunto
2 in [1,2,3] True
otra forma de hacer union es:
a | b
intersección
a & b
diferencia
a - b
¿Cuál es la diferencia de notación entre crear un set implicito y un diccionario implicito? ¿Si tienen diferencias, por qué se inicializan igual?
Las diferencias son clave:
dicc_1 = { 'platzi': [1, 2, 3] } # Elementos ordenados. dicc_2 = {1, 2, 3} # Estos elementos no estan ordenados. print( dicc_1['platzi'][0] ) # Resultado 1 print( dicc_2[0] ) # Error
Es por esto que para agregar un elemento a set se debe utilizar el keyword "add" y no "append" como se usan en las listas y diccionarios, etc.
La principal diferencia entre usar set() y no {} directamente, es por convención del lenguaje python, porque se suele confundir un set con un diccionario.
Excelente clase, la propiedad de set de no repetir valores es muy importante y se puede usar para eliminar los valores repetidos de una lista de una manera muy simple:
>>>a=[1,2,3,2,3,4,5,6,7,3,2,3,4,3,5,6,3,2,1,4] >>>list(set(a)) [1,2,3,4,5,6,7]
🧐 bastante simple, y luego eso lo incluyen en los problemas técnicos.
👌🏽👑
Métodos en los conjuntos:
gracias por listarlos
si una estructura se dice que es inmutable significa que sus valores, los ítem de la misma, no pueden ser modificados, pero se puede modificar todo el valor de la estructura con una asignación.
Me gusto esta clase En el curso anterior no se hablo de los métodos de las tuplas, pero en esta actulización si
¡Hola Rhonal! Te comparto también un link de la documentación oficial de Python donde se explica tuplas --> https://docs.python.org/3.3/tutorial/datastructures.html#tuples-and-sequences
(a.union(b)).difference(a.intersection(b)): diferencia simétrica
Tambien:
a.symetric_difference(b)
o
a^b
Ivan, como puedo escribir la flecha hacía arriba? saludos.
No tenía idea que existieran los conjuntos en python. ¡Excelente clase!
#TUPLA #No se puede modificar, si permite duplicados a=1,2,3,4 a=(1,2,3,4,) #SET #No tienen un orden implicito, no permite duplicados a=set([1,2,3]) b={3,4,5} #Para mostrar los elementos repetidos a.intersection(b) #Para mostrar todos unidos a.union(b) #Para mostrar los elementos diferentes a.difference(b) #eliminar alguno a.remove(20) #Ahi se elimino el 20
Python 3.7.3 (default, Mar 27 2019, 17:13:21) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32 Type "help", "copyright", "credits" or "license" for more information. >>> a=1,2,3 >>> b=[1,2,3] >>> c={1,2,3} >>> d={} >>> d["pizza"]="es lo mas chido" >>> type(a) <class 'tuple'> >>> type(b) <class 'list'> >>> type(c) <class 'set'> >>> type(d) <class 'dict'> >>>```
Hola, el método update como funciona en los set???
Como parametro recibe un iterador, el cual sera agregado al set.
Iteramos la tupla:
Obtenemos un set con los elementos de la tupla agregados:
Cuando agregas el valor 20 en los dos 'sets' ordena el numero en direfentes posiciones porque pasa esto ?, entiendo que los Sets -> no tienen un orden
b = set([1,2,3]) b1 = {3,4,5} print(type(b)) print(type(b1)) b.add(20) b1.add(20) print(b, b1)
Hola, aunque los conjuntos no tienen un orden específico, para la impresión, ptython siempre buscará la forma de mostrar los elementos en orden ascendente o alfabéticamente.
Python interpreta el 20 como si fuera el menor en la b1, pero cuando añades un 1 a ese mismo set, el 20 se va hasta el final, problablemente sea un pequeño error en los sets
en la prepa esta clase estaría increíble para lógica y desde luego en mate de secundaria!!!
Python para todes!!!
todos*
¿Como ahí que?