W3docs

Eliminar Elementos de un Set

Aprende a eliminar elementos de un set en Python con discard(), remove(), pop(), clear() y difference_update(), con ejemplos y advertencias prácticas.

Los sets de Python son mutables, por lo que puedes eliminar elementos en cualquier momento. El lenguaje ofrece varios métodos de eliminación, cada uno con un comportamiento diferente cuando el elemento no existe o cuando deseas eliminar más de un elemento a la vez. Elegir el método correcto evita errores y deja clara tu intención a quienes lean tu código.

Este capítulo cubre:

  • discard() — elimina un elemento, sin error si no está presente
  • remove() — elimina un elemento, lanza KeyError si no está presente
  • pop() — elimina y devuelve un elemento arbitrario
  • clear() — elimina todos los elementos, dejando un set vacío
  • difference_update() — elimina múltiples elementos en una sola llamada
  • Eliminación condicional con un bucle y con comprensiones de set

Si eres nuevo en los sets, lee primero Python Sets. Para agregar elementos a un set, consulta Add Set Items.

El Método discard()

discard() elimina el elemento especificado del set. Si el elemento no está presente, el método no hace nada — no se lanza ninguna excepción. Es la opción más segura cuando no estás seguro de si el elemento existe.

Sintaxis

set.discard(element)
  • element — el valor a eliminar.
  • Valor de retorno: None. El set se modifica en su lugar.

Eliminar un elemento presente

Descartar un elemento que existe en el set

python— editable, runs on the server

Descartar un elemento ausente es seguro

fruits = {'apple', 'banana', 'cherry'}
fruits.discard('mango')   # 'mango' is not in the set
print(fruits)
# {'apple', 'banana', 'cherry'}   — unchanged, no error

Esto hace que discard() sea ideal en bucles donde no puedes tener certeza de que cada elemento que deseas eliminar esté presente.

El Método remove()

remove() también elimina un único elemento, pero lanza un KeyError si el elemento no se encuentra. Úsalo cuando el elemento debe existir — el error actúa como una advertencia temprana de que algo está mal.

Sintaxis

set.remove(element)
  • Valor de retorno: None. El set se modifica en su lugar.

Eliminar un elemento presente

Eliminar un elemento de un set en Python

python— editable, runs on the server

Intentar eliminar un elemento ausente lanza KeyError

fruits = {'apple', 'banana', 'cherry'}
fruits.remove('mango')
# KeyError: 'mango'

Si deseas evitar el error pero seguir usando remove(), protege la llamada con una verificación in, o cambia a discard():

element = 'mango'
if element in fruits:
    fruits.remove(element)

discard() vs remove() — Diferencias Clave

discard()remove()
Elemento presenteLo eliminaLo elimina
Elemento ausenteNo hace nadaLanza KeyError
Usar cuandoLa eliminación es opcionalEl elemento debe existir

El Método pop()

pop() elimina un elemento arbitrario del set y lo devuelve. Dado que los sets no tienen orden, no puedes predecir qué elemento se eliminará — depende del diseño interno de la tabla hash, no del orden de inserción.

Sintaxis

removed = set.pop()
  • Valor de retorno: el elemento eliminado.
  • Lanza KeyError si el set está vacío.

Extraer un elemento de un set en Python

python— editable, runs on the server

pop() en un set vacío lanza KeyError

empty = set()
empty.pop()
# KeyError: 'pop from an empty set'

Protégete de esto con una simple verificación de longitud:

if fruits:
    item = fruits.pop()

Cuándo usar pop()

pop() es útil cuando necesitas procesar y consumir elementos uno a la vez y no te importa el orden — por ejemplo, al vaciar una cola de trabajo almacenada como un set.

El Método clear()

clear() elimina todos los elementos del set, dejándolo vacío. El objeto set en sí sigue existiendo; solo desaparece su contenido.

Sintaxis

set.clear()
  • Valor de retorno: None.

Limpiar un set en Python

python— editable, runs on the server

set() es la forma en que Python muestra un set vacío. Python no puede usar {} para un set vacío porque esa notación ya significa un diccionario vacío.

El Método difference_update()

difference_update() elimina cada elemento de un iterable dado del set, en una sola llamada. Es el equivalente en el lugar del operador - (diferencia).

Sintaxis

set.difference_update(iterable)
  • iterable — un set, lista, tupla o cualquier otro iterable cuyos elementos deseas eliminar.
  • Los elementos del iterable que no están en el set se ignoran silenciosamente.
  • Valor de retorno: None. El set se modifica en su lugar.

Eliminar múltiples elementos a la vez

numbers = {1, 2, 3, 4, 5}
numbers.difference_update({2, 4})
print(numbers)
# {1, 3, 5}

Compara esto con crear un nuevo set con el operador -, que deja el original sin cambios:

numbers = {1, 2, 3, 4, 5}
result = numbers - {2, 4}   # new set, 'numbers' is not modified
print(result)   # {1, 3, 5}
print(numbers)  # {1, 2, 3, 4, 5}

Usa difference_update() cuando quieras mutar el set existente; usa - cuando necesites un nuevo set y desees conservar el original.

Eliminar Múltiples Elementos con un Bucle

Cuando los elementos a eliminar no se conocen de antemano, recógelos primero y luego llama a discard() en un bucle. No modifiques un set mientras iteras sobre él — eso lanza un RuntimeError.

Patrón correcto — recoger candidatos primero, luego eliminar

fruits = {'apple', 'banana', 'cherry', 'avocado'}

# Step 1: collect elements to remove (do NOT modify the set here)
to_remove = [item for item in fruits if item.startswith('a')]

# Step 2: remove them
for item in to_remove:
    fruits.discard(item)

print(fruits)
# {'banana', 'cherry'}

Filtrar con una Comprensión de Set

Si deseas conservar solo los elementos que cumplen una condición, una comprensión de set produce un nuevo set y deja el original intacto:

Conservar solo los números pares

nums = {1, 2, 3, 4, 5, 6}
evens = {x for x in nums if x % 2 == 0}
print(evens)
# {2, 4, 6}

Esto es preferible cuando necesitas preservar el set original o asignar el resultado a una nueva variable. Para sets grandes, también resulta ligeramente más legible que mutar en su lugar.

Consulta Loop Sets para más patrones de iteración sobre sets.

Referencia Rápida de Métodos

MétodoEliminaElemento ausenteDevuelve
discard(x)Elemento xIgnoradoNone
remove(x)Elemento xKeyErrorNone
pop()Elemento arbitrarioKeyError (si está vacío)Elemento eliminado
clear()Todos los elementosn/aNone
difference_update(it)Todos los elementos en itIgnoradoNone

Para una referencia completa de todos los métodos de set, consulta Set Methods. Para aprender a iterar sobre un set, consulta Loop Sets.

Práctica

Práctica
Which of the following methods can be used to remove items from a set in Python?
Which of the following methods can be used to remove items from a set in Python?
Was this page helpful?