HOWTO · Python
Eliminar elemento del conjunto en Python
Existen varios métodos para eliminar elementos de un conjunto en Python. Las funciones remove() y discard() eliminan un único elemento, pop() elimina un elemento arbitrario, y el operador -, difference() y difference_update() eliminan varios elementos a la vez.
En esta página
Este tutorial tratará los diferentes métodos para eliminar elementos de un conjunto en Python. Para eliminar un elemento puede usar remove(), discard() o pop(); para eliminar muchos elementos a la vez puede usar el operador -, difference() o difference_update().
Eliminar un único elemento con la función remove()
La función set.remove() elimina un elemento específico del conjunto. Toma el elemento a eliminar como argumento. Si el elemento está presente, se elimina; si no está presente, remove() genera un KeyError. Vea el siguiente ejemplo de código.
set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.remove(5)
print(set1)
Salida:
{0, 1, 2, 3, 4, 6, 7, 8, 9}
Eliminamos el elemento 5 de set1 con remove(5) en el código anterior. El escenario en el que el valor especificado no está presente en el conjunto se muestra en el ejemplo siguiente.
set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.remove(51)
print(set1)
Salida:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
KeyError: 51
Intentamos eliminar el valor 51 de set1. Como no hay ningún valor 51 presente en set1, la función remove() genera un KeyError.
Eliminar un único elemento con la función discard()
La función discard() es muy similar a remove(): elimina el elemento especificado del conjunto si el valor está presente. La única diferencia es que discard() no genera un KeyError si el valor no está presente en el conjunto, sino que simplemente deja el conjunto sin cambios. El siguiente fragmento de código muestra cómo eliminar un único elemento de un conjunto con discard().
set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.discard(5)
print(set1)
Salida:
{0, 1, 2, 3, 4, 6, 7, 8, 9}
Eliminamos el valor 5 de set1 con la función discard(). Como se explicó anteriormente, si pasamos un valor que no está presente en set1, el código se ejecuta correctamente y no se genera ninguna excepción, como demuestra el siguiente ejemplo.
set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set1.discard(51)
print(set1)
Salida:
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Intentamos eliminar 51 de set1 con la función discard(). Como el valor especificado no existe en set1, no se elimina ningún elemento y no se produce ningún error; set1 se imprime sin cambios.
Eliminar un elemento arbitrario con la función pop()
La función pop() elimina y devuelve un elemento arbitrario del conjunto. Úsela cuando no importe qué elemento se elimine, por ejemplo al procesar los elementos uno por uno hasta que el conjunto quede vacío.
set1 = {1, 2, 3, 4, 5}
removed = set1.pop()
print(removed)
print(set1)
Salida:
1
{2, 3, 4, 5}
pop() devolvió 1 y lo eliminó de set1. Qué elemento se devuelve es arbitrario — el lenguaje no garantiza uno en particular —, así que nunca confíe en que pop() elimine un valor específico. Al igual que remove(), pop() genera un KeyError si el conjunto está vacío.
Eliminar varios elementos con el operador -
El operador - realiza la operación de diferencia de conjuntos en Python. Elimina todos los elementos del conjunto de la derecha del conjunto de la izquierda y devuelve el resultado en forma de un nuevo conjunto. Los elementos del conjunto de la derecha que no están presentes en el de la izquierda simplemente se ignoran, y este método no genera excepciones. El siguiente fragmento de código muestra cómo eliminar varios elementos de un conjunto con el operador -.
set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1 = set1 - set2
print(set1)
Salida:
{1, 3, 5, 7, 9}
Eliminamos todos los elementos de set2 de set1 con el operador - y asignamos el conjunto resultante de nuevo a set1. El siguiente ejemplo de código demuestra el escenario en el que ambos conjuntos no tienen elementos en común.
set1 = {1, 3, 5, 7, 9}
set2 = {2, 4, 6, 8, 0}
set1 = set1 - set2
print(set1)
Salida:
{1, 3, 5, 7, 9}
Como ninguno de los elementos del conjunto de la derecha está presente en el de la izquierda, el código se ejecuta correctamente y el operador - devuelve el conjunto de la izquierda sin cambios.
Eliminar varios elementos con la función difference()
La función set.difference() realiza la misma operación de diferencia de conjuntos que el operador -, en forma de método. Toma el conjunto cuyos elementos deben eliminarse como parámetro de entrada, elimina todos sus elementos del conjunto llamante y devuelve el resultado en forma de un nuevo conjunto. Vea el siguiente fragmento de código.
set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1 = set1.difference(set2)
print(set1)
Salida:
{1, 3, 5, 7, 9}
Eliminamos todos los elementos de set2 de set1 con la función difference() y almacenamos los resultados en set1. El escenario de la función difference() en el que los valores del conjunto de entrada no están presentes en el conjunto llamante es el mismo que el del operador -: no se elimina nada y no se genera ningún error.
Eliminar varios elementos in situ con la función difference_update()
Los dos métodos anteriores devuelven un nuevo conjunto, por lo que el resultado debe almacenarse en algún lugar. La función difference_update() funciona de otro modo: actualiza el conjunto llamante in situ, eliminando directamente de él todos los elementos del conjunto argumento.
set1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
set2 = {2, 4, 6, 8, 0}
set1.difference_update(set2)
print(set1)
Salida:
{1, 3, 5, 7, 9}
Eliminamos todos los elementos de set2 de set1 con la función difference_update(), y ahora set1 mismo contiene el conjunto resultante — a diferencia de los dos métodos anteriores, no fue necesario crear un nuevo conjunto solo para almacenar los resultados. La función difference_update() equivale al operador -= en Python.
Conclusión
Para eliminar un único elemento, use remove() cuando el elemento deba estar presente — un elemento ausente genera un KeyError, lo que hace visibles los errores pronto — y discard() cuando el elemento pueda estar ausente. Use pop() cuando cualquier elemento sirva. Para eliminar varios elementos a la vez, use el operador - o difference() para obtener un nuevo conjunto, o difference_update() (equivalentemente, -=) para actualizar el conjunto in situ.