W3docs

Eliminar elementos de una lista

Aprende todas las formas de eliminar elementos de una lista Python: remove(), pop(), del, clear() y comprensiones de lista, con ejemplos y advertencias.

Las listas de Python son secuencias mutables, por lo que puedes eliminar elementos en cualquier momento. Este capítulo cubre todas las herramientas integradas para eliminar elementos de una lista: remove(), pop(), la sentencia del, clear() y las comprensiones de lista. Cada enfoque se adapta a una situación diferente, y saber cuándo elegir cada uno evita errores comunes.

Referencia rápida

Método / sentenciaElimina por¿Devuelve el elemento eliminado?¿Error si no se encuentra el objetivo?
list.remove(value)Primera coincidencia de valorNoValueError
list.pop()Último elemento (por defecto)IndexError si la lista está vacía
list.pop(index)Elemento en el índiceIndexError si está fuera de rango
del list[index]Elemento en el índiceNoIndexError si está fuera de rango
del list[start:stop]Porción de elementosNoNunca (una porción vacía es válida)
list.clear()Todos los elementosNoNunca
Comprensión de listaElementos que cumplen una condiciónNo (devuelve una nueva lista)Nunca

El método remove()

list.remove(value) busca la primera aparición de value y la elimina. Si el valor no está presente, Python lanza un ValueError.

Eliminar un elemento por su valor

python— editable, runs on the server

Solo se elimina la primera aparición

Cuando un valor aparece más de una vez, remove() elimina únicamente la primera coincidencia y deja el resto:

my_list = [1, 3, 2, 3, 4, 3]
my_list.remove(3)
print(my_list)  # [1, 2, 3, 4, 3]

Protegerse contra ValueError

Comprueba siempre que el valor existe antes de llamar a remove(), o captura la excepción:

Verificar con in antes de eliminar

python— editable, runs on the server

Capturar la excepción

my_list = [1, 2, 4, 5]
try:
    my_list.remove(3)
except ValueError:
    print("3 is not in the list")
# Output: 3 is not in the list

Eliminar todas las apariciones con un bucle

Usa un bucle while para seguir eliminando un valor hasta que no quede ninguno:

Eliminar cada aparición de un elemento

python— editable, runs on the server

El método pop()

list.pop(index) elimina el elemento en index y lo devuelve para que puedas usar el valor. Si omites el índice, elimina y devuelve el último elemento. Esto hace que pop() sea ideal cuando necesitas procesar el valor eliminado.

Eliminar el último elemento

python— editable, runs on the server

Eliminar un elemento en un índice específico

my_list = [1, 2, 3, 4, 5]
item = my_list.pop(1)   # removes and returns 2
print(item)             # 2
print(my_list)          # [1, 3, 4, 5]

IndexError producido por pop()

Llamar a pop() en una lista vacía, o con un índice fuera de rango, lanza un IndexError:

empty = []
empty.pop()   # IndexError: pop from empty list

my_list = [1, 2, 3]
my_list.pop(10)   # IndexError: pop index out of range

La sentencia del

del elimina un elemento (o una porción de elementos) de una lista por posición, sin devolver nada.

Eliminar un único elemento por índice

Eliminar el elemento en el índice 2

python— editable, runs on the server

Eliminar una porción de elementos

del acepta la misma notación de porciones que la indexación, lo que facilita eliminar un rango de elementos en un solo paso:

my_list = [1, 2, 3, 4, 5]
del my_list[1:3]   # removes index 1 and 2 (values 2 and 3)
print(my_list)     # [1, 4, 5]

Eliminar una porción vacía o fuera de límites nunca genera un error — simplemente no tiene efecto.

Eliminar la variable de lista completa

del también puede eliminar la propia variable de lista, no solo su contenido:

my_list = [1, 2, 3]
del my_list
# my_list is now undefined; referencing it raises NameError

El método clear()

list.clear() elimina todos los elementos de la lista, dejándola vacía. El propio objeto lista sigue existiendo (a diferencia de del my_list).

my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list)  # []

clear() es equivalente a del my_list[:] (eliminar la porción completa), pero resulta más legible.

Comprensión de lista para eliminación condicional

La comprensión de lista construye una nueva lista incluyendo solo los elementos que superan una condición, filtrando efectivamente los que deseas eliminar. Esta es la forma más clara de eliminar todos los elementos que cumplen una condición compleja.

Eliminar todas las apariciones de un valor

python— editable, runs on the server

Eliminar todos los números pares

numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_only = [x for x in numbers if x % 2 != 0]
print(odd_only)  # [1, 3, 5, 7]

Dado que una comprensión devuelve una nueva lista en lugar de modificar la original, es seguro usarla cuando necesitas mantener la original sin cambios, o cuando tu condición de filtro implica varios valores a la vez.

Elegir el enfoque correcto

  • ¿Conoces el valor, pero no el índice? Usa remove() (primera coincidencia) o una comprensión de lista (todas las coincidencias o condiciones complejas).
  • ¿Conoces el índice? Usa pop(index) si necesitas el valor de vuelta, o del list[index] si no lo necesitas.
  • ¿Necesitas vaciar la lista entera? Usa clear().
  • ¿Necesitas eliminar un rango de elementos consecutivos? Usa del list[start:stop].

Capítulos relacionados

Práctica

Práctica
¿Cuál de los siguientes puede usarse para eliminar elementos de una lista Python?
¿Cuál de los siguientes puede usarse para eliminar elementos de una lista Python?
Was this page helpful?