Remoção de elementos de uma lista (array) em Python: clear(), pop(), remove(), del

O negócio

Para remover um elemento de uma lista (array) de tipo lista em Python, usar os métodos de lista clear(), pop() e remove(). Também se pode especificar a posição e o intervalo da lista usando índice ou fatia e depois apagá-la usando a instrução del.

A seguinte informação é fornecida aqui.

  • Remover todos os elementos:clear()
  • Eliminar um elemento na posição especificada e obter o seu valor.:pop()
  • Procura os elementos com o valor especificado e remove o primeiro elemento.:remove()
  • Eliminação especificando posição e intervalo na fatia de índice:del
  • Lote eliminar múltiplos elementos que satisfaçam os critérios.:indicação de inclusão na lista

Note-se que as listas podem armazenar dados de diferentes tipos, e são estritamente diferentes das arrays. Use array (biblioteca padrão) ou NumPy quando quiser manusear arrays para processos que requerem tamanho de memória ou endereço de memória, ou para computação numérica de dados em grande escala.

Remover todos os elementos: clear()

No método de lista clara(), todos os elementos são removidos, resultando numa lista vazia.

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

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

Eliminar um elemento na posição especificada e obter o seu valor.: pop()

O método pop() de uma lista pode ser usado para apagar um elemento numa posição especificada e obter o valor desse 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]

Um valor negativo também pode ser usado para especificar a posição a partir do fim (último). O fim (último) é -1.

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

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

Se o argumento for omitido e nenhuma posição for especificada, o elemento no final (último) é eliminado.

print(l.pop())
# 9

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

A especificação de uma posição inexistente resultará num erro.

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

Note-se que o pop(0), que remove o primeiro elemento, requer o seguinte custo e não é uma operação eficiente. Ver a página seguinte no wiki oficial para a complexidade computacional de várias operações em listas.
O(n)

O(1)O tipo deque é fornecido no módulo de colecções padrão da biblioteca como um tipo que elimina elementos para o topo a este custo. Por exemplo, se quiser tratar os dados como uma fila (FIFO), é mais eficiente utilizar o deque.

Procura os elementos com o valor especificado e remove o primeiro elemento.: remove()

O método de lista remover() pode ser usado para procurar elementos com o mesmo valor que o especificado e remover 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 contiver mais do que um elemento que corresponda ao valor especificado, apenas o primeiro será removido.

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

Se for especificado um valor inexistente, ocorre um erro.

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

Eliminação especificando posição e intervalo na fatia de índice: del

Também pode utilizar a declaração del para remover elementos da lista.

Especificar o elemento a ser eliminado pelo 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 especificar um intervalo com fatias, pode eliminar vários elementos ao mesmo tempo.

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]

Também é possível especificar toda a gama e eliminar todos os elementos.

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

[start:stop:step]Se especificar a gama na fatia desta forma e especificar passo incremental, pode eliminar múltiplos elementos de salto de uma só 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 mais informações sobre fatiagem, ver o artigo seguinte.

Lote eliminar múltiplos elementos que satisfaçam os critérios.: indicação de inclusão na lista

O processo de remoção de elementos que satisfazem as condições é equivalente ao processo de deixar (extrair) elementos que não satisfazem as condições. A notação de compreensão da lista é utilizada para este tipo de processamento.

Um exemplo de remoção de elementos ímpares ou pares (= deixar elementos pares ou ímpares) é mostrado abaixo.
%Este é o operador restante.
i % 2
Este é o restante de i dividido por 2.

Na notação de compreensão da lista, é criada uma nova lista. Ao contrário dos métodos de tipo de lista introduzidos até agora, a lista original permanece inalterada.

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. É possível uma variedade de processamento, dependendo da expressão 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 quiser remover elementos duplicados, utilize o tipo de conjunto.

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