Como remover duplicatas de uma lista em Python

Python remove duplicatas de uma lista

Uma lista é um contêiner que contém diferentes objetos Python, que podem ser inteiros, palavras, valores, etc. É o equivalente a um array em outras linguagens de programação.

Portanto, aqui veremos diferentes maneiras pelas quais podemos remover duplicatas de uma determinada lista em Python.

Método 1) Remover duplicatas da lista usando Set

Para remover as duplicatas de uma lista, você pode usar a função integrada set(). A especialidade do método set() é que ele retorna elementos distintos.

Temos uma lista: [1,1,2,3,2,2,4,5,6,2,1]. A lista possui muitas duplicatas que precisamos remover e recuperar apenas os elementos distintos. A lista é dada ao set() função embutida. Later a lista final é exibida usando o list() função integrada, conforme mostrado no exemplo abaixo.


A saída que obtemos são elementos distintos onde todos os elementos duplicados são eliminados.
Exemplo

my_list = [1,1,2,3,2,2,4,5,6,2,1]
my_final_list = set(my_list)
print(list(my_final_list))

Saída:

[1, 2, 3, 4, 5, 6]

Método 2) Usando a lista temporária

Para remover duplicatas de um determinado list, você pode usar uma lista temporária vazia. Para isso primeiro, você terá que percorrer a lista com duplicatas e adicionar os itens exclusivos à lista temporária. Later a lista temporária é atribuída à lista principal.

Exemplo
Aqui está um exemplo prático usando lista temporária.

my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2]
print("List Before ", my_list)
temp_list = []

for i in my_list:
    if i not in temp_list:
        temp_list.append(i)

my_list = temp_list

print("List After removing duplicates ", my_list)

Saída:

List Before  [1, 2, 3, 1, 2, 4, 5, 4, 6, 2]
List After removing duplicates  [1, 2, 3, 4, 5, 6]

Método 3) Usando Dict

Podemos remover duplicatas da lista fornecida importando OrderedDict das coleções. Está disponível a partir do python2.7. OrderedDict se encarrega de retornar os elementos distintos em uma ordem em que a chave está presente.

Vamos fazer uso de uma lista e usar fromkeys() método disponível em OrderedDict para obter os elementos exclusivos da lista.

Para fazer uso de OrderedDict.fromkey() método, você deve importar OrderedDict das coleções, conforme mostrado abaixo:

from collections import OrderedDict

Aqui está um exemplo para remover duplicatas usando OrderedDict.fromkeys() método.

Exemplo

from collections import OrderedDict

my_list = ['a','x','a','y','a','b','b','c']

my_final_list = OrderedDict.fromkeys(my_list)

print(list(my_final_list))

Saída:

['a', 'x', 'y', 'b', 'c']

Do Python 3.5+ em diante, podemos fazer uso do regular dict.fromkeys() para obter os elementos distintos da lista. O dict.fromkeys() os métodos retornam chaves que são exclusivas e ajudam a eliminar os valores duplicados.

Um exemplo que mostra o funcionamento de dict.fromkeys() em uma lista para fornecer itens exclusivos é o seguinte:

Exemplo

my_list = ['a','x','a','y','a','b','b','c']
my_final_list = dict.fromkeys(my_list)
print(list(my_final_list))

Saída:

['a', 'x', 'y', 'b', 'c']

Método 4) Usando loop for

utilização loop for, percorreremos a lista de itens para remover duplicatas.

Primeiro inicialize o array para vazio, ou seja myFinallist = [].Dentro do loop for, adicione a verificação se os itens da lista existem no array myFinallist. Se os itens não existirem, adicione o item ao array myFinallist usando o comando append() método.

Portanto, sempre que o item duplicado for encontrado ele já estará presente no array myFinallist e não será inserido. Vamos agora verificar o mesmo no exemplo abaixo:

Exemplo

my_list = [1,2,2,3,1,4,5,1,2,6]
myFinallist = []
for i in my_list:
    if i not in myFinallist:
myFinallist.append(i)
print(list(myFinallist))

Saída:

[1, 2, 3, 4, 5, 6]

Método 5) Usando compreensão de lista

Compreensões de lista são funções Python usadas para criar novas sequências (como listas, dicionários, etc.) usando sequências que já foram criadas. Isso ajuda a reduzir loops mais longos e torna seu código mais fácil de ler e manter.

Vamos usar a compreensão de lista para remover duplicatas da lista fornecida.

Exemplo

my_list = [1,2,2,3,1,4,5,1,2,6]
my_finallist = []
[my_finallist.append(n) for n in my_list if n not in my_finallist] 
print(my_finallist)

Saída:

[1, 2, 3, 4, 5, 6]

Método 6) Usando o método Numpy unique().

O método unique() do módulo Numpy pode nos ajudar a remover duplicatas da lista fornecida.

Para trabalhar com o primeiro módulo numpy de importação do Numpy, você precisa seguir estas etapas:

Passo 1) Importar módulo Numpy

import numpy as np

Passo 2) Use sua lista com duplicatas dentro do método exclusivo conforme mostrado abaixo. A saída é convertida de volta para um formato de lista usando tolist() método.

myFinalList = np.unique(my_list).tolist()

Passo 3) Por fim imprima a lista conforme mostrado abaixo:

print(myFinalList)

O código final com saída é o seguinte:

import numpy as np
my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = np.unique(my_list).tolist()
print(myFinalList)

Saída:

[1, 2, 3, 4, 5, 6]

Método 7) Usando métodos Pandas

O módulo Pandas possui um unique() método que nos dará os elementos únicos da lista fornecida.

Para trabalhar com o módulo Pandas, você precisa seguir estas etapas:

Passo 1) Importar módulo Pandas

import pandas as pd

Passo 2) Use sua lista com duplicatas dentro unique() método conforme mostrado abaixo:

myFinalList = pd.unique(my_list).tolist()

Passo 3) Imprima a lista conforme mostrado abaixo:

print(myFinalList)

O código final com saída é o seguinte:

import pandas as pd

my_list = [1,2,2,3,1,4,5,1,2,6]
myFinalList = pd.unique(my_list).tolist()
print(myFinalList)

Saída:

[1, 2, 3, 4, 5, 6]

Método 8) Usando enumerate() e compreensão de lista

Aqui, a combinação de compreensão de lista e enumeração para remover os elementos duplicados. Enumerate retorna um objeto com um contador para cada elemento da lista. Por exemplo (0,1), (1,2) etc. Aqui o primeiro valor é o índice e o segundo valor é o item da lista. C

Cada elemento é verificado se existe na lista e, se existir, é removido da lista.

Exemplo

my_list = [1,2,2,3,1,4,5,1,2,6]
my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]] 
print(list(my_finallist))

Saída:

[1, 2, 3, 4, 5, 6]

Resumo

  • Para remover as duplicatas de uma lista, você pode usar a função integrada set(). A especialidade do set() método é que ele retorna elementos distintos.
  • Você pode remover duplicatas da lista fornecida importando OrderedDictfrom coleções. Está disponível a partir do python2.7. OrderedDictdict se encarrega de retornar os elementos distintos em uma ordem em que a chave está presente.
  • Você pode usar um loop for que percorreremos a lista de itens para remover duplicatas.
  • O método unique() do módulo Numpy pode nos ajudar a remover duplicatas da lista fornecida.
  • O módulo Pandas possui um unique() método que nos dará os elementos únicos da lista fornecida.
  • A combinação de compreensão e enumeração da lista é usada para remover os elementos duplicados da lista. Enumerate retorna um objeto com um contador para cada elemento da lista.