Conjuntos de Python: operaciones, métodos y teoría de conjuntos

Conjuntos maestros en Python. Aprenda a almacenar valores únicos, ejecutar intersecciones, uniones, diferencias y comprender los beneficios de rendimiento del hashing.

Pruébelo en el editor

Descripción general

Un conjunto es una colección desordenada de elementos únicos en Python. Los conjuntos se basan en tablas hash, lo que los hace altamente optimizados para las pruebas de membresía, es decir, determinar si un elemento específico está dentro de la colección. Si bien verificar si un elemento está en una lista requiere escanear cada elemento (una operación `O(N)`), verificar la membresía en un conjunto se ejecuta en tiempo constante `O(1)`. Esto hace que los conjuntos sean increíblemente potentes para la eliminación de duplicados y el filtrado masivo de datos.

Los conjuntos se inicializan usando llaves `{}` que contienen valores (sin dos puntos) o usando el constructor incorporado `set()`. Tenga en cuenta que dado que las llaves también se utilizan para los diccionarios, escribir llaves vacías `{}` inicializa un diccionario vacío. Para inicializar un conjunto vacío, debe usar `set()`. Los elementos dentro de un conjunto deben ser hash e inmutables, lo que significa que puede almacenar números, cadenas y tuplas, pero no puede almacenar listas o diccionarios dentro de un conjunto.

Más allá de los métodos básicos de suma y eliminación, los conjuntos de Python admiten de forma nativa operaciones de la teoría matemática de conjuntos. Esto incluye Unión (`|` o `.union()`) para fusionar colecciones, Intersección (`&` o `.intersection()`) para encontrar elementos comunes, Diferencia (`-` o `.difference()`) para encontrar elementos exclusivos de una colección y Diferencia simétrica (`^`) para recuperar elementos en cualquiera de los conjuntos, pero no en ambos. Los conjuntos de masterización le permiten resolver problemas complejos de agrupación con código limpio, eficaz y legible.

Código y salida de ejecución

Eliminar duplicados de una lista y realizar operaciones matemáticas de conjuntos.

# Removing duplicates
roles_list = ["admin", "user", "editor", "admin", "user"]
# Sort the set to guarantee deterministic printed output
unique_roles = sorted(list(set(roles_list)))
print(f"Unique roles: {unique_roles}")

# Set operations
dev_skills = {"python", "javascript", "sql"}
ops_skills = {"sql", "docker", "kubernetes"}

# Union and Intersection (sorted for deterministic output)
all_skills = sorted(list(dev_skills | ops_skills))
common_skills = sorted(list(dev_skills & ops_skills))
unique_to_dev = sorted(list(dev_skills - ops_skills))

print(f"Union: {all_skills}")
print(f"Intersection: {common_skills}")
print(f"Dev only: {unique_to_dev}")
Salida terminal
Unique roles: ['admin', 'editor', 'user']
Union: ['docker', 'javascript', 'kubernetes', 'python', 'sql']
Intersection: ['sql']
Dev only: ['javascript', 'python']

Implementación paso a paso

  • Eliminar entradas duplicadas de resultados API o archivos CSV
  • Determinar elementos comunes entre dos bases de datos.
  • Realizar operaciones de búsqueda rápida en listas de ID grandes

Preguntas frecuentes

¿Están ordenados los elementos de un conjunto?

No, los conjuntos están desordenados. No puede acceder a elementos mediante un índice (como set[0]) ni dividirlos.

¿Cómo agrego o elimino elementos en un conjunto?

Utilice el método .add() para insertar un solo elemento y .remove() o .discard() para eliminar uno. .discard() es más seguro ya que no arroja un error si falta el elemento.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.