12 KiB
- 📘 Día 7
- Conjuntos
- Crear conjuntos
- Obtener la longitud del conjunto
- Acceder a elementos del conjunto
- Comprobar elementos
- Añadir elementos al conjunto
- Eliminar elementos del conjunto
- Vaciar el conjunto
- Eliminar conjunto
- Convertir lista a conjunto
- Unir conjuntos
- Encontrar intersección
- Comprobar subconjuntos y superconjuntos
- Comprobar la diferencia entre conjuntos
- Encontrar diferencia simétrica
- Comprobar conjuntos disjuntos
- 💻 Ejercicios - Día 7
- Conjuntos
📘 Día 7
Conjuntos
Un conjunto es una colección de elementos. Volvamos a las clases de matemáticas de primaria o secundaria: la definición matemática de conjuntos aplica también en Python. Un conjunto es una colección desordenada y no indexada de elementos distintos. En Python, los conjuntos almacenan elementos únicos y se pueden encontrar la unión, la intersección, la diferencia, la diferencia simétrica, los subconjuntos, los superconjuntos y los conjuntos disjuntos entre conjuntos.
Crear conjuntos
Usamos la función incorporada set().
- Crear un conjunto vacío
# Sintaxis
st = set()
- Crear un conjunto con elementos iniciales
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
Ejemplo:
# Sintaxis
fruits = {'banana', 'orange', 'mango', 'lemon'}
Obtener la longitud del conjunto
Usamos la función len() para obtener la longitud de un conjunto.
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
len(st)
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
len(fruits)
Acceder a elementos del conjunto
Usamos bucles para recorrer los elementos. Veremos esto con más detalle en la sección de bucles.
Comprobar elementos
Para comprobar si un elemento existe en un conjunto usamos el operador de pertenencia in.
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
print("Does set st contain item3? ", 'item3' in st) # Does set st contain item3? True
Ejemplo:
fruits = {'plátano', 'naranja', 'mango', 'limón'}
print('mango' in fruits ) # True
Añadir elementos al conjunto
Una vez creado el conjunto no podemos cambiar elementos existentes, pero sí podemos añadir nuevos.
- Usar el método add() para agregar un solo elemento
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
st.add('item5')
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
fruits.add('lime')
- Usar el método update() para agregar varios elementos El método update() permite añadir múltiples elementos; recibe un iterable como argumento.
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
st.update(['item5','item6','item7'])
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
vegetables = ('tomato', 'potato', 'cabbage','onion', 'carrot')
fruits.update(vegetables)
Eliminar elementos del conjunto
Podemos usar el método remove() para eliminar un elemento de un conjunto. Si el elemento no existe, remove() lanzará un error; por eso es útil comprobar antes si existe. El método discard() no lanzará error si el elemento no existe.
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
st.remove('item2')
El método pop() elimina y devuelve un elemento aleatorio del conjunto.
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
fruits.pop() # Elimina un elemento aleatorio del conjunto
Si nos interesa el elemento eliminado.
fruits = {'banana', 'orange', 'mango', 'lemon'}
removed_item = fruits.pop()
Vaciar el conjunto
Si queremos vaciar todas las entradas de un conjunto, podemos usar el método clear().
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
st.clear()
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
fruits.clear()
print(fruits) # set()
Eliminar conjunto
Si queremos eliminar el conjunto por completo, podemos usar el operador del.
# Sintaxis
st = {'item1', 'item2', 'item3', 'item4'}
del st
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
del fruits
Convertir lista a conjunto
Podemos convertir una lista en un conjunto y viceversa. Convertir una lista a conjunto elimina duplicados y conserva solo elementos únicos.
# Sintaxis
lst = ['item1', 'item2', 'item3', 'item4', 'item1']
st = set(lst) # {'item2', 'item4', 'item1', 'item3'} - El orden es aleatorio, ya que los conjuntos son generalmente no ordenados
Ejemplo:
fruits = ['banana', 'orange', 'mango', 'lemon','orange', 'banana']
fruits = set(fruits) # {'mango', 'lemon', 'banana', 'orange'}
Unir conjuntos
Podemos usar los métodos union() o update() para combinar dos conjuntos.
- Union Este método devuelve un nuevo conjunto
# Sintaxis
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item5', 'item6', 'item7', 'item8'}
st3 = st1.union(st2)
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
vegetables = {'tomato', 'potato', 'cabbage','onion', 'carrot'}
print(fruits.union(vegetables)) # {'lemon', 'carrot', 'tomato', 'banana', 'mango', 'orange', 'cabbage', 'potato', 'onion'}
- Update Este método inserta los elementos de un conjunto en el conjunto dado
# Sintaxis
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item5', 'item6', 'item7', 'item8'}
st1.update(st2) # Los elementos de st2 se añaden a st1
Ejemplo:
fruits = {'banana', 'orange', 'mango', 'lemon'}
vegetables = {'tomato', 'potato', 'cabbage','onion', 'carrot'}
fruits.update(vegetables)
print(fruits) # {'lemon', 'carrot', 'tomato', 'banana', 'mango', 'orange', 'cabbage', 'potato', 'onion'}
Encontrar intersección
La intersección devuelve un conjunto con los elementos que están presentes en ambos conjuntos. Véase el ejemplo.
# Sintaxis
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item3', 'item2'}
st1.intersection(st2) # {'item3', 'item2'}
Ejemplo:
whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_numbers = {0, 2, 4, 6, 8, 10}
whole_numbers.intersection(even_numbers) # {0, 2, 4, 6, 8, 10}
python = {'p', 'y', 't', 'h', 'o', 'n'}
dragon = {'d', 'r', 'a', 'g', 'o', 'n'}
python.intersection(dragon) # {'o', 'n'}
Comprobar subconjuntos y superconjuntos
Un conjunto puede ser subconjunto o superconjunto de otro:
- Subconjunto: issubset()
- Superconjunto: issuperset()
# Sintaxis
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item2', 'item3'}
st2.issubset(st1) # True
st1.issuperset(st2) # True
Ejemplo:
whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_numbers = {0, 2, 4, 6, 8, 10}
whole_numbers.issubset(even_numbers) # Falso, porque es un superconjunto
whole_numbers.issuperset(even_numbers) # Verdadero
python = {'p', 'y', 't', 'h', 'o', 'n'}
dragon = {'d', 'r', 'a', 'g', 'o', 'n'}
python.issubset(dragon) # Falso
Comprobar la diferencia entre conjuntos
Devuelve la diferencia entre dos conjuntos.
# Sintaxis
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item2', 'item3'}
st2.difference(st1) # set()
st1.difference(st2) # {'item1', 'item4'} => st1\st2
Ejemplo:
whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_numbers = {0, 2, 4, 6, 8, 10}
whole_numbers.difference(even_numbers) # {1, 3, 5, 7, 9}
python = {'p', 'y', 't', 'o', 'n'}
dragon = {'d', 'r', 'a', 'g', 'o', 'n'}
python.difference(dragon) # {'p', 'y', 't'} - El resultado es desordenado (propiedad de los conjuntos)
dragon.difference(python) # {'d', 'r', 'a', 'g'}
Encontrar diferencia simétrica
Devuelve la diferencia simétrica entre dos conjuntos. Es decir, devuelve los elementos que pertenecen a uno de los conjuntos pero no a ambos; matemáticamente: (A\B) ∪ (B\A).
# Sintaxis
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item2', 'item3'}
# Significa (A\B) ∪ (B\A)
st2.symmetric_difference(st1) # {'item1', 'item4'}
Ejemplo:
whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
some_numbers = {1, 2, 3, 4, 5}
whole_numbers.symmetric_difference(some_numbers) # {0, 6, 7, 8, 9, 10}
python = {'p', 'y', 't', 'h', 'o', 'n'}
dragon = {'d', 'r', 'a', 'g', 'o', 'n'}
python.symmetric_difference(dragon) # {'r', 't', 'p', 'y', 'g', 'a', 'd', 'h'}
Comprobar conjuntos disjuntos
Si dos conjuntos no comparten elementos se dicen disjuntos. Podemos usar el método isdisjoint() para comprobar si dos conjuntos son disjuntos.
# Sintaxis
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item2', 'item3'}
st2.isdisjoint(st1) # Falso
Ejemplo:
even_numbers = {0, 2, 4, 6, 8}
odd_numbers = {1, 3, 5, 7, 9}
even_numbers.isdisjoint(odd_numbers) # Verdadero, porque no comparten elementos
python = {'p', 'y', 't', 'h', 'o', 'n'}
dragon = {'d', 'r', 'a', 'g', 'o', 'n'}
python.isdisjoint(dragon) # Falso, comparten {'o', 'n'}
🌕 Eres una estrella en ascenso. Acabas de completar el desafío del día 7. Ahora realiza algunos ejercicios para practicar.
💻 Ejercicios - Día 7
# Conjuntos
it_companies = {'Facebook', 'Google', 'Microsoft', 'Apple', 'IBM', 'Oracle', 'Amazon'}
A = {19, 22, 24, 20, 25, 26}
B = {19, 22, 20, 25, 26, 24, 28, 27}
age = [22, 19, 24, 25, 26, 24, 25, 24]
Ejercicios: Nivel 1
- Encuentra la longitud del conjunto
it_companies - Agrega 'Twitter' a
it_companies - Inserta varias empresas IT a
it_companiesde una sola vez - Elimina una empresa de
it_companies - ¿Cuál es la diferencia entre
remove()ydiscard()?
Ejercicios: Nivel 2
- Concatena A y B
- Encuentra la intersección entre A y B
- ¿Es A un subconjunto de B?
- ¿Son A y B conjuntos disjuntos?
- Combina A con B y viceversa
- ¿Cuál es la diferencia simétrica entre A y B?
- Elimina un conjunto por completo
Ejercicios: Nivel 3
- Convierte la lista de edades a un conjunto y compara la longitud de la lista y la del conjunto: ¿cuál es mayor?
- Explica la diferencia entre estos tipos de datos: cadena, lista, tupla y conjunto
- Para la frase "Soy profesor, me gusta motivar y enseñar a las personas." ¿cuántas palabras únicas tiene? Usa
split()y conjuntos para obtener las palabras únicas.
🎉 ¡Felicidades! 🎉
