Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Dominando Conjuntos en Python: Creación, Manipulación y Operaciones

Conjuntos en Python

Descubre cómo el tipo de dato set de Python simplifica la desduplicación de datos y operaciones basadas en conjuntos. Esta guía cubre creación, modificación, eliminación y todas las operaciones esenciales.

Video: Conjuntos en Python

Un conjunto es una colección no ordenada de elementos únicos e inmutables. Aunque el conjunto en sí es mutable —permitiendo añadir o eliminar elementos— sus elementos individuales deben ser hashables (ej. números, cadenas, tuplas).

Los conjuntos de Python soportan operaciones matemáticas de conjuntos como unión, intersección, diferencia y diferencia simétrica, lo que los hace ideales para tareas como desduplicación de datos, pruebas de pertenencia y álgebra de conjuntos.


Crear Conjuntos en Python

Usa llaves o el constructor integrado set() para crear un conjunto. Los elementos pueden ser de cualquier tipo inmutable, pero tipos mutables como listas, diccionarios u otros conjuntos no pueden incluirse.

# Ejemplo 1: Conjuntos con diferentes tipos de datos
# conjunto de enteros
my_set = {1, 2, 3}
print(my_set)
# conjunto de tipos mixtos
my_set = {1.0, 'Hola', (1, 2, 3)}
print(my_set)

Salida

{1, 2, 3} {1.0, (1, 2, 3), 'Hola'}

Observa cómo los valores duplicados se eliminan automáticamente y cómo las tuplas —al ser inmutables— son aceptadas.

# Eliminando duplicados
my_set = {1, 2, 3, 4, 3, 2}
print(my_set)
# Construyendo un conjunto desde una lista
my_set = set([1, 2, 3, 2])
print(my_set)
# Intentar incluir un elemento mutable causa error
# my_set = {1, 2, [3, 4]}  # TypeError: unhashable type: 'list'

Salida

{1, 2, 3, 4} {1, 2, 3} Traceback (most recent call last): File "<string>", line 15, in <module> my_set = {1, 2, [3, 4]} TypeError: unhashable type: 'list'

Crear un conjunto vacío requiere el constructor set(); usar {} crea un diccionario vacío en su lugar.

# Distinguir conjunto y diccionario al crear estructuras vacías
a = {}
print(type(a))
a = set()
print(type(a))

Salida

<class 'dict'> <class 'set'>

Modificar un Conjunto en Python

Los conjuntos son mutables, pero no soportan indexación ni slicing debido a su naturaleza no ordenada.

Usa add() para insertar un solo elemento y update() para fusionar otro iterable en el conjunto. Las entradas duplicadas se ignoran automáticamente.

# Ejemplo: Añadiendo elementos
my_set = {1, 3}
print(my_set)
# Intentar indexar un conjunto lanza error
# my_set[0]  # TypeError: 'set' object does not support indexing
# Añadir un solo elemento
my_set.add(2)
print(my_set)
# Añadir múltiples elementos desde una lista
my_set.update([2, 3, 4])
print(my_set)
# Combinar una lista y otro conjunto
my_set.update([4, 5], {1, 6, 8})
print(my_set)

Salida

{1, 3} {1, 2, 3} {1, 2, 3, 4} {1, 2, 3, 4, 5, 6, 8}

Eliminar Elementos de un Conjunto

Usa discard() para eliminar un elemento si existe, o no hacer nada si no existe. En contraste, remove() lanza KeyError cuando el elemento está ausente.

# Ejemplo: Discard vs. remove
my_set = {1, 3, 4, 5, 6}
print(my_set)
my_set.discard(4)
print(my_set)
my_set.remove(6)
print(my_set)
my_set.discard(2)
print(my_set)
# Lo siguiente lanzará KeyError
# my_set.remove(2)

Salida

{1, 3, 4, 5, 6} {1, 3, 5, 6} {1, 3, 5} {1, 3, 5} Traceback (most recent call last): File "<string>", line 28, in <module> KeyError: 2

El método pop() elimina y devuelve un elemento arbitrario, mientras que clear() vacía el conjunto completamente.

# Ejemplo pop y clear
my_set = set("HolaMundo")
print(my_set)
print(my_set.pop())
print(my_set)
my_set.clear()
print(my_set)

Salida

{'H', 'l', 'r', 'W', 'o', 'd', 'e'} H {'r', 'W', 'o', 'd', 'e'} set()

Operaciones de Conjuntos en Python

Los conjuntos de Python soportan álgebra de conjuntos clásica: unión, intersección, diferencia y diferencia simétrica. Estas pueden invocarse vía operadores o métodos dedicados.

Usemos dos conjuntos de ejemplo:

A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}

Unión

Dominando Conjuntos en Python: Creación, Manipulación y Operaciones

La unión de A y B combina todos los elementos distintos.

print(A | B)

Salida

{1, 2, 3, 4, 5, 6, 7, 8}

Intersección

Dominando Conjuntos en Python: Creación, Manipulación y Operaciones

La intersección devuelve solo elementos comunes a ambos conjuntos.

print(A & B)

Salida

{4, 5}

Diferencia

Dominando Conjuntos en Python: Creación, Manipulación y Operaciones

La diferencia A - B lista elementos presentes en A pero no en B.

print(A - B)

Salida

{1, 2, 3}

Diferencia Simétrica

Dominando Conjuntos en Python: Creación, Manipulación y Operaciones

La diferencia simétrica A ^ B devuelve elementos que están en uno u otro conjunto pero no en ambos.

print(A ^ B)

Salida

{1, 2, 3, 6, 7, 8}

Métodos Adicionales de Conjuntos

Referencia rápida de todos los métodos integrados disponibles en objetos set:

MétodoDescripción
add()Añade un elemento al conjunto
clear()Elimina todos los elementos
copy()Devuelve una copia superficial
difference()Devuelve nuevo conjunto con elementos en el llamador pero no en otros
difference_update()Eliminación de diferencia in-place
discard()Elimina elemento si está presente; sin error si ausente
intersection()Devuelve nuevo conjunto de elementos comunes
intersection_update()Actualización de intersección in-place
isdisjoint()True si los conjuntos no tienen elementos en común
issubset()True si el llamador es subconjunto de otro
issuperset()True si el llamador contiene otro conjunto completamente
pop()Elimina y devuelve elemento arbitrario; KeyError si vacío
remove()Elimina elemento; KeyError si ausente
symmetric_difference()Devuelve nuevo conjunto de elementos exclusivos a cada conjunto
symmetric_difference_update()Actualización de diferencia simétrica in-place
union()Devuelve nuevo conjunto con todos los elementos únicos
update()Unión in-place con otro iterable

Prueba de Pertenencia en Conjuntos

Verifica existencia de elemento usando la palabra clave in.

my_set = set("manzana")
print('a' in my_set)   # True
print('p' not in my_set)  # False

Salida

True False

Iterar sobre un Conjunto

Recorre un conjunto con un bucle for estándar; el orden no está garantizado.

for letra in set("manzana"):
    print(letra)

Funciones Integradas con Conjuntos

Funciones como len(), max(), min(), sum(), all(), any() y sorted() funcionan perfectamente con conjuntos. Tabla de utilidades comunes:

FunciónDescripción
all()True si todos los elementos son verdaderos (o conjunto vacío)
any()True si al menos un elemento es verdadero
enumerate()Itera con índice, útil para depuración
len()Número de elementos
max()Elemento mayor
min()Elemento menor
sorted()Devuelve lista ordenada desde el conjunto
sum()Suma de todos los elementos numéricos

Frozenset en Python

Un frozenset es la contraparte inmutable de un conjunto. Una vez creado, sus elementos no pueden cambiar, lo que lo hace hashable y usable como clave de diccionario.

A = frozenset([1, 2, 3, 4])
B = frozenset([3, 4, 5, 6])

Las operaciones soportadas son las mismas que los conjuntos regulares, excepto los métodos mutantes.

print(A.isdisjoint(B))
print(A.difference(B))
print(A | B)
# Intentar añadir un elemento lanza AttributeError
# A.add(3)  # AttributeError: 'frozenset' object has no attribute 'add'

python

  1. Dominando tipos de datos en Python: Guía práctica
  2. Dominando operadores en Python: Guía completa
  3. Dominando la sentencia pass en Python: Guía práctica
  4. Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
  5. Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
  6. Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
  7. Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
  8. Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
  9. Visión general de Python: Lenguaje de alto nivel, legible, interactivo y orientado a objetos
  10. Números en Python: Entendiendo tipos de datos numéricos inmutables
  11. Dominando cadenas en Python: Creación, acceso y manipulación