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 / sentencia | Elimina por | ¿Devuelve el elemento eliminado? | ¿Error si no se encuentra el objetivo? |
|---|---|---|---|
list.remove(value) | Primera coincidencia de valor | No | ValueError |
list.pop() | Último elemento (por defecto) | Sí | IndexError si la lista está vacía |
list.pop(index) | Elemento en el índice | Sí | IndexError si está fuera de rango |
del list[index] | Elemento en el índice | No | IndexError si está fuera de rango |
del list[start:stop] | Porción de elementos | No | Nunca (una porción vacía es válida) |
list.clear() | Todos los elementos | No | Nunca |
| Comprensión de lista | Elementos que cumplen una condición | No (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
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
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 listEliminar 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
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
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 rangeLa 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
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 NameErrorEl 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
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, odel 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
- Python Lists — crear, indexar y comprender los fundamentos de las listas
- Access List Items — indexación y porciones
- Add List Items —
append(),insert(),extend() - Change List Items — actualizar valores en su lugar
- List Comprehension — filtrar y transformar listas
- List Methods — referencia completa de todos los métodos de lista
- Remove List Duplicates — deduplicar una lista
- Sort Lists —
sort()ysorted()