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ção | Remove por | Retorna o item removido? | Erro se o alvo não existir? |
|---|---|---|---|
list.remove(value) | Primeiro valor correspondente | Não | ValueError |
list.pop() | Último item (padrão) | Sim | IndexError em lista vazia |
list.pop(index) | Item no índice | Sim | IndexError se fora do intervalo |
del list[index] | Item no índice | Não | IndexError se fora do intervalo |
del list[start:stop] | Fatia de itens | Não | Nunca (fatia vazia é válida) |
list.clear() | Todos os itens | Não | Nunca |
| Compreensão de lista | Itens que satisfazem uma condição | Nã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
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
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 listRemovendo 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
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
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 rangeA 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
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 NameErrorO 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
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, oudel 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
- Python Lists — criar, indexar e entender os fundamentos de listas
- Access List Items — indexação e fatiamento
- Add List Items —
append(),insert(),extend() - Change List Items — atualizar valores no lugar
- List Comprehension — filtrar e transformar listas
- List Methods — referência completa de todos os métodos de lista
- Remove List Duplicates — remover duplicatas de uma lista
- Sort Lists —
sort()esorted()