Pesquisa de site

Como remover itens de listas em Python


Remover itens de uma lista Python é uma tarefa comum que você pode realizar com várias técnicas. Se você precisa remover um item por sua posição ou valor, o Python ajuda você. Neste tutorial, você explorará diferentes abordagens para remover itens de uma lista, incluindo o uso de .pop(), a instrução del e .remove() .

O método .remove() permite excluir a primeira ocorrência de um valor especificado, enquanto .pop() pode remover um item pelo seu índice e retorná-lo. A instrução del oferece outra maneira de remover itens por índice, e você também pode usá-la para excluir partes de uma lista. A abordagem que você escolher dependerá de suas necessidades específicas.

No final deste tutorial, você entenderá que:

  • Para remover um item de uma lista em Python, você pode usar várias abordagens como .pop(), del , .remove() e .clear().
  • Para remover itens de uma determinada posição em uma lista, você usa o método .pop() .
  • Para excluir itens e fatias de uma lista no Python, você usa a instrução del .
  • Você usa o método .remove() para excluir a primeira ocorrência de um valor especificado de uma lista.
  • Para remover todos os itens de uma lista, você usa .clear().
  • Você também pode remover itens duplicados usando um loop, dicionário ou set.

Para aproveitar ao máximo este tutorial, você deve estar familiarizado com os tópicos básicos de list do Python, como criar listas, adicionar itens a uma lista e acessar itens em uma lista.

Como remover itens específicos de uma lista

Uma operação comum que você executará em uma lista Python é remover itens de lista específicos. Pode ser necessário remover itens com base na posição deles na lista ou em seu valor.

Para ilustrar como você pode realizar essa tarefa, suponha que esteja criando um site para uma biblioteca pública. Seu aplicativo da Web permitirá que os usuários salvem uma lista de livros que eles gostariam de ler. Ele também deve permitir que eles editem e removam livros da lista, além de classificar a lista.

Você pode usar uma lista Python para armazenar a lista de leitura do usuário como uma coleção de títulos de livros. Por exemplo, a lista de leitura pode ser semelhante a esta:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]

Agora que você tem uma lista de livros, há várias maneiras de remover um único livro específico da lista. Uma abordagem é usar o método .pop().

Removendo itens usando o método .pop()

Às vezes, pode ser necessário remover itens de uma determinada posição de uma lista. Por exemplo, em um aplicativo de biblioteca pública, os usuários podem selecionar livros para remover marcando as caixas de seleção na interface do usuário. Seu aplicativo excluirá cada item selecionado com base em seu índice, que é a posição do item na lista.

Se você souber o índice do item que deseja remover, poderá usar o método .pop(). Este método utiliza o índice do item como argumento opcional e, em seguida, remove e retorna o item nesse índice. Se você não passar um argumento de índice para a chamada do método, então .pop() removerá e retornará o último item da lista.

Observe que as listas Python usam indexação baseada em zero para posicionamento, o que significa que o primeiro elemento de uma lista está no índice 0, o segundo elemento está no índice 1 e assim por diante. Com isso em mente, aqui está um exemplo de como você pode usar .pop() para remover e exibir o primeiro elemento da sua lista de books:

>>> books.pop(0)
'Dragonsbane'

Você invoca o método .pop() na lista books com um índice 0, indicando o primeiro elemento da lista. Esta chamada remove o primeiro título, Dragonsbane, da lista e depois o retorna.

Se você verificar o conteúdo da sua lista depois de executar este código, você notará que Dragonsbane não está mais lá:

>>> books
['The Hobbit', 'Wonder', 'Jaws']

Aqui, você exibe a lista de livros novamente após a chamada .pop(). Você pode ver que sua lista agora tem um elemento a menos porque .pop() removeu o primeiro título.

Como você aprendeu anteriormente no tutorial, .pop() remove um item e também retorna seu valor, que você pode usar para outras operações. Por exemplo, suponha que o aplicativo da biblioteca também permita aos usuários armazenar uma lista separada de livros que eles leram. Depois que o usuário lê um livro, eles podem removê -lo da lista de livros iniciais e transferir o título para a lista de leitura:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> read_books = []

>>> read = books.pop(0)
>>> read_books.append(read)

>>> read_books
['Dragonsbane']
>>> books
['The Hobbit', 'Wonder', 'Jaws']

Na segunda linha do exemplo, você cria uma nova lista vazia chamada read_books para armazenar os nomes dos livros que o usuário leu. Em seguida, você usa o método .pop() para remover o primeiro título da lista de livros originais e armazená -lo em uma variável. Em seguida, você usa .append() para adicionar o título armazenado à lista read_books .

Quando você inspeciona o conteúdo de ambas as listas, vê que a lista de leitura agora inclui o primeiro título removido, e a lista de livros original não contém mais o título.

Se você chamar o método .pop() em uma lista vazia, o método gerará uma exceção IndexError:

>>> books.pop()
'Jaws'
>>> books.pop()
'Wonder'
>>> books.pop()
'The Hobbit'

>>> books.pop()
Traceback (most recent call last):
  ...
IndexError: pop from empty list

Neste exemplo, você chama .pop() na sua lista repetidamente, removendo cada título da lista. Sua chamada final para .pop() resulta em uma exceção indexError porque você está chamando o método em uma lista vazia.

O método .pop() também aumentará um indexError se você o chamar com um argumento de índice maior que o tamanho da lista menos um:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.pop(50)
Traceback (most recent call last):
  ...
IndexError: pop index out of range

Neste trecho de código, você chama .pop() na lista de livros original, que contém apenas quatro elementos. Você usou o método .pop() para o item no índice 50, mas isso está fora do intervalo porque a lista não é tão grande, então gera um IndexError.

Usando um índice negativo como argumento para .pop() permite remover os itens da lista da direita para a esquerda, em vez de começar do início da lista. Por exemplo, um índice -1 acessa o último item da lista, um índice -2 acessará o segundo ao último item e assim por diante. De acordo com esse padrão, livros [-len (livros)] é um índice negativo que retorna o primeiro item.

O exemplo a seguir mostra como usar um índice negativo com .pop() para remover o último item de uma lista::

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.pop(-1)
'Jaws'

>>> books
['Dragonsbane', 'The Hobbit', 'Wonder']

Você chama .pop() na lista usando -1 como argumento. Esse índice remove o título final, Tubarão, da lista. Ao verificar o conteúdo da lista novamente, você verá que o último item foi removido. Você também poderia ter chamado books.pop() sem um argumento para obter o mesmo efeito.

Excluindo itens com a instrução del

Você também pode remover itens de um índice específico com a instrução del . Como o método .pop() , del remove um item na posição especificada, mas ele não retorna o valor.

Para ilustrar, diga que o usuário do seu aplicativo de biblioteca pública acidentalmente adicionou alguns livros à lista duas vezes. O exemplo a seguir mostra como usar corretamente del para remover os títulos de livros duplicados:

>>> >>> books = [
...     "Dragonsbane",
...     "The Hobbit",
...     "Wonder",
...     "Wonder",
...     "Jaws",
...     "Jaws",
... ]

>>> del books[2]
>>> books
['Dragonsbane', 'The Hobbit', 'Wonder', 'Jaws', 'Jaws']

Na linha destacada, você escreve primeiro a palavra-chave del, depois o nome da variável da lista, seguido pelo índice desejado entre colchetes.

Assim como no método .pop() , você também pode usar valores de índice negativo com a instrução del para remover itens do final de uma lista:

>>> del books[-1]

Você remove o último item da lista com a instrução del, mas ela não retornará o valor. Se você precisar armazenar o valor removido por qualquer motivo, use o método .pop().

Semelhante ao método .pop(), você receberá uma exceção IndexError se tentar usar del em uma lista com um índice inválido :

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> del books[100]
Traceback (most recent call last):
  ...
IndexError: list assignment index out of range

A lista de livros contém apenas quatro itens, mas você tenta executar del na lista usando um índice de 100. Este índice está fora do intervalo porque não há nenhum item na posição 100.

Ao contrário de .pop(), você deve fornecer um valor de índice com uma instrução del. Caso contrário, o programa gerará um SyntaxError:

>>> del books[]
  File "<input>", line 1
    del books[]
              ^
SyntaxError: invalid syntax

Você executa a instrução del sem um índice, que resulta em uma exceção syntaxError porque o operador de indexação requer um índice de destino. Esta declaração não exclui o último item da lista como chamando .pop() sem um argumento o faz.

Removendo itens por valor com o método .remove()

Suponha que o aplicativo de lista de livros forneça um campo de texto onde os usuários possam inserir um título para excluir da lista.

Se você deseja remover um item de uma lista pelo seu valor e não pelo seu índice, poderá usar o método .remove() . Requer um único valor como argumento e remove o primeiro item da lista que corresponde a esse valor:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.remove("The Hobbit")
>>> books
['Dragonsbane', 'Wonder', 'Jaws']

Na segunda linha deste exemplo, você chama .remove() para remover o hobbit da lista de livros. Quando você exibe a lista atualizada, você vê que o o Hobbit foi removido com sucesso.

Se você chamar .remove() com um valor que não está na lista, o método gerará uma exceção ValueError, conforme mostrado no código a seguir:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> books.remove("The Two Towers")
Traceback (most recent call last):
  ...
ValueError: list.remove(x): x not in list

Além disso, diferentemente de .pop(), você não pode chamar .remove() sem passar um valor:

>>> books.remove()
Traceback (most recent call last):
  ...
TypeError: list.remove() takes exactly one argument (0 given)

Aqui, você liga para .remove() sem transmitir um argumento. Como resultado, você recebe uma mensagem typeError explicando que o método requer um argumento.

Exclua uma parte de uma lista

Seu usuário pode precisar remover vários itens de uma lista de uma só vez. Digamos que seu aplicativo de biblioteca pública exiba um determinado número de itens por página, semelhante a um serviço de e-mail ou site de compras, e permite ao usuário selecionar e excluir todos os itens dessa página de uma só vez.

Se a lista mostrar 25 itens por página, será mais rápido para o usuário remover todos os 25 itens juntos como um pedaço, em vez de clicar e excluir cada um individualmente.

Você pode fazer esse tipo de exclusão com a instrução del, que você usou anteriormente para remover itens de um índice específico. A instrução del também permite excluir fatias da lista de uma só vez, portanto, em vez de fornecer um único argumento de índice, você passa uma posição inicial inclusiva e uma posição final exclusiva, separadas por dois pontos.

A instrução del remove todos os itens da lista que estão dentro desse intervalo de índice. Por exemplo, suponha que você queira remover os três primeiros livros da lista:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws"]
>>> del books[0:3]
>>> books
['Jaws']

Na segunda linha, você chama a instrução Del Ligue para que exclui a lista da lista. Em seguida, você exibe a lista atualizada, que mostra que os três primeiros itens foram excluídos. Lembre -se de que os valores do índice começam no índice 0 e vá até, mas não incluem índice 3 . Então, no código, você removeu os três primeiros títulos da lista.

Você também pode usar valores de índice negativos com del para excluir um intervalo de itens da lista, conforme mostrado no exemplo abaixo:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws", "It"]
>>> del books[-3:-1]
>>> books
['Dragonsbane', 'The Hobbit', 'It']

Neste exemplo, na segunda linha, você exclui os livros começando no índice -3 (a entrada Wonder) e até, mas não incluindo, o item no índice -1 (It). Lembre-se, com índices negativos, você conta os itens regressivamente a partir do final da lista. Por exemplo, a instrução del books[-3:-1] é equivalente a del books[2:4] neste caso.

Limpar todos os itens de uma lista

Suponha que seu usuário queira limpar completamente a lista de livros. Você pode remover todos os itens de uma lista usando o método .clear() . Aqui está como funciona:

>>> books = ["Dragonsbane", "The Hobbit", "Wonder", "Jaws", "It"]
>>> books.clear()
>>> books
[]

Na primeira linha, você chama o método .clear() , que não leva argumentos e remove todos os itens da lista. Em seguida, você inspeciona livros no shell python após a operação .clear() , que confirma que a lista agora está vazia.

Remova duplicatas com um loop

Suponha que você esteja trabalhando em um aplicativo que permita entradas duplicadas em uma lista. Por exemplo, um aplicativo de livro de contatos pode permitir vários contatos com o mesmo número de telefone, mas nomes diferentes. Nesse caso, você pode encontrar uma lista com números de telefone duplicados.

Para remover duplicatas da lista, você pode usar uma combinação de loops e métodos de lista. Essa abordagem envolve iterar pela lista e remover cada instância de um valor quando há mais de uma ocorrência desse valor.

Anteriormente, você viu como o método .remove() remove apenas a primeira instância de um item que corresponde ao argumento do valor. Agora, você verá como pode usá -lo em um loop.

Para simplificar, imagine o aplicativo do seu livro de contato é usado em um país com números de telefone curtos que incluem um código de país inicial de dois dígitos. Além disso, suponha que a ordem dos números na lista seja importante. Sua lista de contatos pode parecer algo assim:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

Primeiro, você precisa determinar quantas vezes um número aparece na lista. Python fornece o método .count(), que retorna o número de ocorrências de um valor especificado na lista.

Por exemplo, você pode usar .count() para determinar quantas vezes o número 54123 aparece na lista de contatos:

>>> phone_numbers.count("54123")
3

A chamada para .count() retorna 3, informando quantas instâncias do número de telefone estão na lista. Em seguida, é hora de criar o loop para remover as duplicatas. Você pode criar um loop que verifica se há mais de uma instância do número e, em seguida, remove cada duplicata até que reste apenas um número.

Usando o método .Count() e um loop, você pode iterar através da lista de contatos e, para cada número, desde que a contagem seja maior que um, remova uma das instâncias:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

>>> for phone_number in phone_numbers[:]:
...     while phone_numbers.count(phone_number) > 1:
...         phone_numbers.remove(phone_number)
...

>>> phone_numbers
['54456', '54789', '54123']

Neste exemplo, você vê a lista de números de telefone duplicados. Na segunda linha, você configura um loop for que examinará cada número, um de cada vez. Embora a contagem de um número seja maior que um, você chama .remove() na lista com o número como argumento. Após o término do loop, você terá uma lista sem duplicatas. Observe que a ordem na lista final é baseada na última ocorrência de cada item.

Para uma maneira mais concisa de remover duplicatas, você também pode usar um dicionário. Um dicionário é um tipo de dados Python que representa uma coleção associativa de teclas exclusivas que são mapeadas para valores. Como os dicionários não podem conter teclas duplicadas, você pode usar o método .Fromkeys() para remover cópias da sua lista:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

>>> phone_numbers = list(dict.fromkeys(phone_numbers))

>>> phone_numbers
['54123', '54456', '54789']

Você usa o método .fromkeys() para converter sua lista em um dicionário sem chaves duplicadas. Em seguida, você converte o dicionário novamente em uma lista que agora tem as duplicatas removidas. Os dicionários mantêm sua ordem de inserção, então você tem a garantia de que os elementos da sua lista desduplicada estão ordenados como no original. Com este método, a ordem final corresponde à ordenação da primeira ocorrência de cada item.

Use um conjunto para remover duplicatas

No exemplo anterior do livro de contato, a ordem dos números da lista foi importante. No entanto, se você deseja remover itens duplicados em uma lista e não se importa com a ordem dos itens, considere usar um conjunto em vez de uma lista. Um Set é do tipo de coleção interno em Python que não permite itens duplicados.

O exemplo abaixo mostra como você pode converter uma lista em um conjunto de números de telefone exclusivos:

>>> phone_numbers = ["54123", "54123", "54456", "54789", "54789", "54123"]

>>> set(phone_numbers)
{'54123', '54789', '54456'}

Na linha destacada, você usa set() para converter a lista em um conjunto, removendo todas as entradas duplicadas. Observe que os conjuntos são coleções não ordenadas, para que não garantem que os itens da sua lista sejam organizados em sua ordem original. Devido a esse comportamento, um conjunto pode não ser o tipo de dados certo a ser usado se o seu projeto exigir que os itens permaneçam encomendados.

No entanto, os conjuntos podem ser classificados em uma lista, o que geralmente é um requisito importante para listas de contatos e outros aplicativos semelhantes. Eles também oferecem suporte a testes de associação eficientes, permitindo verificar rapidamente se existe um valor na coleção.

Conclusão

Você aprendeu várias técnicas para remover itens de uma lista do Python, seja por posição ou valor. Você explorou métodos como .pop(), .remove() e .clear(). Você também aprendeu sobre a instrução del. Cada uma dessas ferramentas oferece uma abordagem única para manipulação de listas. Além disso, você se aprofundou na remoção de duplicatas usando outras abordagens, como loops, dicionários e conjuntos.

Aprender sobre manipulação de listas é essencial para um desenvolvedor Python, pois as listas são um tipo de dados fundamental em Python.

Neste tutorial, você aprendeu como:

  • Remova um item de uma lista por index usando .pop() e del
  • Use o método .remove() para excluir a primeira ocorrência de um valor especificado
  • Exclua Slike ou porções de uma lista com a instrução del
  • Limpe todos os itens de uma lista usando o método .clear()
  • Remova itens duplicados com um loop, dicionário ou set

Essas habilidades permitirão que você manipule listas com eficiência em seus projetos Python, tornando seu código mais robusto e adaptável a várias necessidades de manuseio de dados.