Eliminando elementos dunha lista (matriz) en Python: clear(), pop(), remove(), del

Negocios

Para eliminar un elemento dunha lista (matriz) de tipo lista en Python, use os métodos de lista clear(), pop() e remove(). Tamén pode especificar a posición e o intervalo da lista usando índice ou porción e, a continuación, eliminalo mediante a instrución del.

A seguinte información ofrécese aquí.

  • Elimina todos os elementos:clear()
  • Elimina un elemento na posición especificada e obtén o seu valor.:pop()
  • Busca elementos co valor especificado e elimina o primeiro elemento.:remove()
  • Eliminando especificando a posición e o intervalo no segmento de índice:del
  • Eliminar por lotes varios elementos que cumpran os criterios.:indicación de inclusión na lista

Teña en conta que as listas poden almacenar datos de diferentes tipos e son estrictamente diferentes das matrices. Use array (biblioteca estándar) ou NumPy cando queira xestionar matrices para procesos que requiren tamaño de memoria ou enderezo de memoria, ou para o cálculo numérico de datos a gran escala.

Elimina todos os elementos:clear()

No método de lista clear(), elimínanse todos os elementos, resultando unha lista baleira.

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

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

Elimina un elemento na posición especificada e obtén o seu valor.:pop()

O método pop() dunha lista pódese usar para eliminar un elemento nunha posición especificada e obter o valor dese elemento.

O primeiro número (inicial) é 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]

Tamén se pode usar un valor negativo para especificar a posición desde o final (último). O final (último) é -1.

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

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

Se o argumento se omite e non se especifica ningunha posición, elimínase o elemento ao final (último).

print(l.pop())
# 9

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

Especificar unha posición inexistente producirá un erro.

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

Teña en conta que pop(0), que elimina o primeiro elemento, require o seguinte custo e non é unha operación eficiente. Vexa a seguinte páxina na wiki oficial para coñecer a complexidade computacional de varias operacións nas listas.
O(n)

O(1)O tipo deque ofrécese no módulo de coleccións de biblioteca estándar como un tipo que elimina elementos da parte superior a este custo. Por exemplo, se quere tratar os datos como unha cola (FIFO), é máis eficiente usar deque.

Busca elementos co valor especificado e elimina o primeiro elemento.:remove()

O método de lista remove() pódese usar para buscar elementos co mesmo valor especificado e eliminar o primeiro elemento.

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

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

Se a lista contén máis dun elemento que coincida co valor especificado, só se eliminará o primeiro.

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

Se se especifica un valor inexistente, prodúcese un erro.

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

Eliminando especificando a posición e o intervalo no segmento de índice:del

Tamén pode usar a instrución del para eliminar elementos da lista.

Especifique o elemento a eliminar polo seu índice. O primeiro índice (inicial) é 0 e o último índice (final) é -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]

Se especificas un intervalo con porcións, podes eliminar varios elementos á 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]

Tamén é posible especificar todo o intervalo e eliminar todos os elementos.

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

[start:stop:step]Se especifica o intervalo na porción deste xeito e especifica un paso incremental, pode eliminar varios elementos de salto á 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 obter máis información sobre o corte, consulte o seguinte artigo.

Eliminar por lotes varios elementos que cumpran os criterios.:indicación de inclusión na lista

O proceso de eliminación de elementos que cumpren as condicións equivale ao proceso de deixar (extraer) elementos que non cumpren as condicións. A notación de comprensión de lista úsase para este tipo de procesamento.

A continuación móstrase un exemplo de eliminación de elementos pares ou impares (= deixando elementos pares ou impares).
%Este é o operador restante.
i % 2
Este é o resto de i dividido por 2.

Na notación de comprensión da lista, créase unha nova lista. A diferenza dos métodos de tipo de lista introducidos ata agora, a lista orixinal permanece sen cambios.

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]

Outros exemplos. É posible unha variedade de procesamentos dependendo da expresión condicional.

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']

Se desexa eliminar elementos duplicados, use o tipo de conxunto de conxunto.

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