Eliminar elementos de una lista (array) en Python: clear(), pop(), remove(), del

Negocio

Para eliminar un elemento de una lista (array) de tipo list en Python, utilice los métodos de lista clear(), pop() y remove(). También se puede especificar la posición y el rango de la lista mediante el uso de index o slice y, a continuación, eliminarla mediante la sentencia del.

La siguiente información se proporciona aquí.

  • Eliminar todos los elementos:clear()
  • Eliminar un elemento en la posición especificada y obtener su valor.:pop()
  • Busca elementos con el valor especificado y elimina el primer elemento.:remove()
  • Borrar especificando la posición y el rango en la porción de índice:del
  • Borrar por lotes varios elementos que cumplan los criterios.:indicación de inclusión en la lista

Tenga en cuenta que las listas pueden almacenar datos de diferentes tipos, y son estrictamente diferentes de los arrays. Utilice array (biblioteca estándar) o NumPy cuando quiera manejar arrays para procesos que requieran tamaño de memoria o dirección de memoria, o para el cálculo numérico de datos a gran escala.

Eliminar todos los elementos: clear()

En el método de la lista clear(), se eliminan todos los elementos, dando como resultado una lista vacía.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Eliminar un elemento en la posición especificada y obtener su valor.: pop()

El método pop() de una lista puede utilizarse para eliminar un elemento en una posición determinada y obtener el valor de ese elemento.

El primer número (inicial) es 0.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(0))
# 0

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

print(l.pop(3))
# 4

print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]

También se puede utilizar un valor negativo para especificar la posición desde el final (último). El final (último) es -1.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Si se omite el argumento y no se especifica ninguna posición, se elimina el elemento del final (último).

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

Especificar una posición inexistente dará lugar a un error.

# print(l.pop(100))
# IndexError: pop index out of range

Tenga en cuenta que pop(0), que elimina el primer elemento, requiere el siguiente coste y no es una operación eficiente. Consulta la siguiente página de la wiki oficial para conocer la complejidad computacional de varias operaciones sobre listas.
O(n)

O(1)El tipo deque se proporciona en el módulo de colecciones de la biblioteca estándar como un tipo que elimina los elementos al principio con este coste. Por ejemplo, si quieres tratar los datos como una cola (FIFO), es más eficiente usar deque.

Busca elementos con el valor especificado y elimina el primer elemento.: remove()

El método de lista remove() puede utilizarse para buscar elementos con el mismo valor especificado y eliminar el primer elemento.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

Si la lista contiene más de un elemento que coincide con el valor especificado, sólo se eliminará el primero.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Si se especifica un valor inexistente, se produce un error.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

Borrar especificando la posición y el rango en la porción de índice: del

También puede utilizar la sentencia del para eliminar elementos de la lista.

Especifica el elemento a eliminar por su índice. El primer índice (inicial) es 0 y el último (final) es -1.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]

del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]

Si se especifica un rango con rebanadas, se pueden eliminar varios elementos a la vez.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]

l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]

l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]

l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]

También es posible especificar todo el rango y eliminar todos los elementos.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Si se especifica el rango en el corte de esta manera y se especifica el paso incremental, se pueden eliminar varios elementos de salto a la vez.

l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]

l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]

Para más información sobre el corte, consulte el siguiente artículo.

Borrar por lotes varios elementos que cumplan los criterios.: indicación de inclusión en la lista

El proceso de eliminar los elementos que satisfacen las condiciones es equivalente al proceso de dejar (extraer) los elementos que no satisfacen las condiciones. Para este tipo de proceso se utiliza la notación de comprensión de listas.

A continuación se muestra un ejemplo de eliminación de elementos pares o impares (= dejando elementos pares o impares).
%Es el operador del resto.
i % 2
Es el resto de i dividido por 2.

En la notación de comprensión de listas, se crea una nueva lista. A diferencia de los métodos de tipo lista introducidos hasta ahora, la lista original no se modifica.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]

print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]

print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Otros ejemplos. En función de la expresión condicional, es posible realizar diversos tratamientos.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']

print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']

print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']

Si desea eliminar los elementos duplicados, utilice el tipo de conjunto.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']
Copied title and URL