Compra libros de Python en Amazon al mejor precio
Ahora vamos a explorar los conjuntos (set) en Python. Los conjuntos son colecciones desordenadas de elementos únicos. Esto significa que un conjunto no puede contener duplicados y el orden de los elementos no está garantizado.
set
Creación de Conjuntos:
Hay dos formas principales de crear conjuntos en Python:
Usando llaves {}: Se encierran los elementos separados por comas dentro de llaves. Sin embargo, para crear un conjunto vacío, debes usar set(), ya que {} crea un diccionario vacío.
{}
set()
conjunto_vacio = set() conjunto_numeros = {1, 2, 3, 4, 5} conjunto_cadenas = {"manzana", "banana", "cereza"} conjunto_mixto = {1, "hola", 3.14, True} conjunto_con_duplicados = {1, 2, 2, 3, 3, 3} print(conjunto_con_duplicados) # {1, 2, 3} (los duplicados se eliminan automáticamente)
Usando la función set(): Se puede convertir un iterable (como una lista, tupla o cadena) en un conjunto. Los duplicados se eliminarán durante la conversión.
lista = [1, 2, 2, 3, 4, 4, 5] conjunto_desde_lista = set(lista) # {1, 2, 3, 4, 5} tupla = (10, 20, 20, 30) conjunto_desde_tupla = set(tupla) # {10, 20, 30} cadena = "abracadabra" conjunto_desde_cadena = set(cadena) # {'a', 'b', 'r', 'c', 'd'} (el orden puede variar)
Operaciones con Conjuntos:
Los conjuntos en Python admiten varias operaciones matemáticas de conjuntos:
Unión (| o union()): Devuelve un nuevo conjunto que contiene todos los elementos de ambos conjuntos.
|
union()
conjunto_a = {1, 2, 3} conjunto_b = {3, 4, 5} union_ab = conjunto_a | conjunto_b print(union_ab) # {1, 2, 3, 4, 5} union_ab_metodo = conjunto_a.union(conjunto_b) print(union_ab_metodo) # {1, 2, 3, 4, 5}
Intersección (& o intersection()): Devuelve un nuevo conjunto que contiene solo los elementos comunes a ambos conjuntos.
&
intersection()
conjunto_a = {1, 2, 3} conjunto_b = {3, 4, 5} interseccion_ab = conjunto_a & conjunto_b print(interseccion_ab) # {3} interseccion_ab_metodo = conjunto_a.intersection(conjunto_b) print(interseccion_ab_metodo) # {3}
Diferencia (- o difference()): Devuelve un nuevo conjunto que contiene los elementos que están en el primer conjunto pero no en el segundo 1 conjunto.
-
difference()
conjunto_a = {1, 2, 3} conjunto_b = {3, 4, 5} diferencia_ab = conjunto_a - conjunto_b print(diferencia_ab) # {1, 2} diferencia_ab_metodo = conjunto_a.difference(conjunto_b) print(diferencia_ab_metodo) # {1, 2} diferencia_ba = conjunto_b - conjunto_a print(diferencia_ba) # {4, 5} diferencia_ba_metodo = conjunto_b.difference(conjunto_a) print(diferencia_ba_metodo) # {4, 5}
Diferencia Simétrica (^ o symmetric_difference()): Devuelve un nuevo conjunto que contiene los elementos que están en uno de los conjuntos, pero no en ambos.
^
symmetric_difference()
conjunto_a = {1, 2, 3} conjunto_b = {3, 4, 5} diferencia_simetrica_ab = conjunto_a ^ conjunto_b print(diferencia_simetrica_ab) # {1, 2, 4, 5} diferencia_simetrica_ab_metodo = conjunto_a.symmetric_difference(conjunto_b) print(diferencia_simetrica_ab_metodo) # {1, 2, 4, 5}
Otros Métodos de Conjuntos:
Además de las operaciones de conjuntos, existen otros métodos útiles:
add(elemento): Añade un elemento al conjunto. Si el elemento ya existe, no hace nada.
add(elemento)
mi_conjunto = {1, 2} mi_conjunto.add(3) print(mi_conjunto) # {1, 2, 3} mi_conjunto.add(2) print(mi_conjunto) # {1, 2, 3} (no se añade duplicado)
remove(elemento): Elimina un elemento del conjunto. Si el elemento no existe, causa un KeyError.
remove(elemento)
KeyError
mi_conjunto = {1, 2, 3} mi_conjunto.remove(2) print(mi_conjunto) # {1, 3} # mi_conjunto.remove(4) # KeyError: 4
discard(elemento): Elimina un elemento del conjunto si está presente. Si el elemento no existe, no hace nada (no causa error).
discard(elemento)
mi_conjunto = {1, 2, 3} mi_conjunto.discard(2) print(mi_conjunto) # {1, 3} mi_conjunto.discard(4) print(mi_conjunto) # {1, 3} (no pasa nada)
pop(): Elimina y devuelve un elemento arbitrario del conjunto. Como los conjuntos no están ordenados, no se puede predecir qué elemento se eliminará. Causa un KeyError si el conjunto está vacío.
pop()
mi_conjunto = {1, 2, 3} elemento_eliminado = mi_conjunto.pop() print(mi_conjunto) # El conjunto con un elemento menos (el orden puede variar) print(elemento_eliminado) # El elemento eliminado
clear(): Elimina todos los elementos del conjunto, dejándolo vacío.
clear()
mi_conjunto = {1, 2, 3} mi_conjunto.clear() print(mi_conjunto) # set()
Métodos de comparación:
issubset(otro_conjunto)
<=
True
otro_conjunto
issuperset(otro_conjunto)
>=
isdisjoint(otro_conjunto)
set_a = {1, 2} set_b = {1, 2, 3} set_c = {4, 5} print(set_a.issubset(set_b)) # True print(set_b.issuperset(set_a)) # True print(set_a <= set_b) # True print(set_b >= set_a) # True print(set_a.isdisjoint(set_c)) # True print(set_a.isdisjoint(set_b)) # False
Los conjuntos son muy útiles cuando necesitas trabajar con colecciones de elementos únicos y realizar operaciones de conjuntos de manera eficiente. Su naturaleza desordenada los hace inadecuados para situaciones donde el orden de los elementos es importante.