W3docs

Remover Itens de uma Lista

Aprenda todas as formas de remover itens de uma lista Python: remove(), pop(), del, clear() e compreensões de lista, com exemplos e dicas.

As listas Python são sequências mutáveis, portanto você pode excluir elementos a qualquer momento. Este capítulo abrange todas as ferramentas integradas para remover itens de listas: remove(), pop(), a instrução del, clear() e compreensões de lista. Cada abordagem é adequada para uma situação diferente, e saber quando usar qual delas evita bugs comuns.

Referência rápida

Método / instruçãoRemove porRetorna o item removido?Erro se o alvo não existir?
list.remove(value)Primeiro valor correspondenteNãoValueError
list.pop()Último item (padrão)SimIndexError em lista vazia
list.pop(index)Item no índiceSimIndexError se fora do intervalo
del list[index]Item no índiceNãoIndexError se fora do intervalo
del list[start:stop]Fatia de itensNãoNunca (fatia vazia é válida)
list.clear()Todos os itensNãoNunca
Compreensão de listaItens que satisfazem uma condiçãoNão (retorna nova lista)Nunca

O método remove()

list.remove(value) encontra a primeira ocorrência de value e a exclui. Se o valor não estiver presente, Python lança um ValueError.

Remover um item pelo seu valor

python— editable, runs on the server

Apenas a primeira ocorrência é removida

Quando um valor aparece mais de uma vez, remove() exclui somente a primeira correspondência e mantém as demais:

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

Protegendo-se contra ValueError

Sempre verifique se o valor existe antes de chamar remove(), ou capture a exceção:

Verificar com in antes de remover

python— editable, runs on the server

Capturar a exceção

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

Removendo todas as ocorrências com um loop

Use um loop while para continuar removendo um valor até que nenhum reste:

Remover todas as ocorrências de um elemento

python— editable, runs on the server

O método pop()

list.pop(index) remove o item no index e o retorna para que você possa usar o valor. Se você omitir o índice, ele remove e retorna o último item. Isso torna pop() ideal quando você precisa processar o valor removido.

Remover o último item

python— editable, runs on the server

Remover um item em um í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 com pop()

Chamar pop() em uma lista vazia, ou com um índice fora do intervalo, lança um IndexError:

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

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

A instrução del

del remove um item (ou uma fatia de itens) de uma lista pela posição, sem retornar nada.

Excluir um único item pelo índice

Remover o item no índice 2

python— editable, runs on the server

Excluir uma fatia de itens

del aceita a mesma notação de fatia que a indexação, facilitando a remoção de um intervalo de elementos em uma única etapa:

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]

Excluir uma fatia vazia ou fora dos limites nunca gera um erro — simplesmente não tem efeito.

Excluir a variável da lista inteira

del também pode remover a própria variável da lista, não apenas seu conteúdo:

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

O método clear()

list.clear() remove todos os elementos da lista, deixando uma lista vazia. O objeto lista em si ainda existe (ao contrário de del my_list).

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

clear() é equivalente a del my_list[:] (excluir a fatia inteira), mas é mais legível.

Compreensão de lista para remoção condicional

A compreensão de lista constrói uma nova lista incluindo apenas os elementos que satisfazem uma condição, efetivamente filtrando os que você deseja remover. Esta é a forma mais clara de remover todos os itens que correspondem a uma condição complexa.

Remover todas as ocorrências de um valor

python— editable, runs on the server

Remover todos os 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]

Como uma compreensão retorna uma nova lista em vez de modificar a original, é seguro usá-la quando você precisa manter o original inalterado, ou quando sua condição de filtro envolve múltiplos valores ao mesmo tempo.

Escolhendo a abordagem correta

  • Conhece o valor, mas não o índice? Use remove() (primeira correspondência) ou uma compreensão de lista (todas as correspondências ou condições complexas).
  • Conhece o índice? Use pop(index) se precisar do valor de volta, ou del list[index] caso não precise.
  • Precisa esvaziar a lista inteira? Use clear().
  • Precisa remover um intervalo de itens consecutivos? Use del list[start:stop].

Capítulos relacionados

Prática

Prática
Which of the following can be used to remove items from a Python list?
Which of the following can be used to remove items from a Python list?
Was this page helpful?