1.6 – ¿Qué es un conjunto? (set)

Un set es una colección desordenada, mutable y sin elementos duplicados.

  • No mantiene orden
  • No permite duplicados
  • Es mutable
  • Permite operaciones matemáticas (unión, intersección, diferencia)
  • Muy eficiente en búsquedas

Crear un conjunto

mi_conjunto = {1, 2, 3, 4, 5}

También usando el constructor:

mi_conjunto = set([1, 2, 3, 4, 5])

Conjunto vacío

{} crea un diccionario, no un set.

conjunto_vacio = set()

Características importantes

  • No tienen índices
  • No permiten slicing
  • No mantienen orden
  • Solo aceptan elementos inmutables (no listas, no diccionarios)
# Esto da error
mi_set = {[1,2,3]}

Métodos principales

Agregar elementos

s = {1,2,3}
s.add(4)

Eliminar elementos

remove(x)

Error si no existe.

s.remove(2)

discard(x)

No error si no existe.

s.discard(10)

pop()

Elimina elemento aleatorio.

s.pop()

clear()

s.clear()

Operaciones matemáticas de conjuntos

Sean:

a = {1,2,3}
b = {3,4,5}

Unión (elementos de ambos)

a | b
a.union(b)

Resultado → {1,2,3,4,5}


Intersección (elementos comunes)

a & b
a.intersection(b)

Resultado → {3}


Diferencia (elementos de A que no están en B)

a - b
a.difference(b)

Resultado → {1,2}


Diferencia simétrica (elementos que NO son comunes)

a ^ b
a.symmetric_difference(b)

Resultado → {1,2,4,5}


Relaciones entre conjuntos

Subconjunto

{1,2}.issubset({1,2,3})

Superconjunto

{1,2,3}.issuperset({1,2})

Sin elementos en común

{1,2}.isdisjoint({3,4})

Comprobar pertenencia

3 in {1,2,3}
10 in {1,2,3}

Esta operación es muy rápida (O(1)).


Convertir entre estructuras

Lista → Set (eliminar duplicados)

lista = [1,2,2,3,4,4]
sin_dup = set(lista)

Set → Lista

lista = list(sin_dup)

Copiar conjuntos

copia = mi_conjunto.copy()

Recorrer conjuntos

for elemento in {1,2,3}:
print(elemento)

El orden puede cambiar.


Ejemplo práctico

conjunto1 = {1,2,3,4}
conjunto2 = {3,4,5,6}print(conjunto1 | conjunto2)
print(conjunto1 & conjunto2)
print(conjunto1 - conjunto2)
print(conjunto1 ^ conjunto2)conjunto1.add(7)
conjunto1.discard(2)print(conjunto1)

Cuándo usar conjuntos

Usa sets cuando:

  • Necesites eliminar duplicados
  • Quieras operaciones matemáticas
  • Necesites búsquedas rápidas
  • No importe el orden

Errores comunes

Intentar indexar un set:

s = {1,2,3}
print(s[0]) # Error

Intentar meter listas o diccionarios dentro.


Tabla de métodos principales

MétodoQué haceEjemploResultado
add(x)Añade elemento{1,2}.add(3){1,2,3}
remove(x)Elimina (error si no existe){1,2}.remove(2){1}
discard(x)Elimina sin error{1,2}.discard(5){1,2}
pop()Elimina elemento aleatorio{1,2}.pop(){2} o {1}
clear()Vacía el conjuntos.clear()set()
union()Unióna.union(b){1,2,3,4,5}
intersection()Interseccióna.intersection(b){3}
difference()Diferenciaa.difference(b){1,2}
symmetric_difference()Diferencia simétricaa.symmetric_difference(b){1,2,4,5}
issubset()Subconjunto{1}.issubset({1,2})True
issuperset()Superconjunto{1,2}.issuperset({1})True
isdisjoint()Sin comunes{1}.isdisjoint({2})True
copy()Copia superficials.copy()nuevo set

Ejercicios

  1. Elimina duplicados de una lista usando set.
  2. Calcula intersección entre dos listas convertidas a set.
  3. Comprueba si un conjunto es subconjunto de otro.
  4. Crea dos sets y calcula diferencia simétrica.
  5. Cuenta elementos únicos en una lista grande.