Remover elementos duplicados de uma lista, um processo chamado desduplicação, é uma tarefa comum em Python. A melhor abordagem depende se você precisa preservar a ordem original dos elementos. Este artigo explora dois métodos eficientes: um priorizando velocidade e o outro preservando a ordem.
Sumário
Desduplicando uma Lista (Não Ordenada)
Para situações em que a ordem dos elementos não é crítica, aproveitar o tipo set
embutido do Python oferece a solução mais rápida. Conjuntos inerentemente armazenam apenas elementos únicos. Converter uma lista para um conjunto e depois de volta para uma lista remove eficazmente as duplicatas.
my_list = [1, 2, 2, 3, 4, 4, 5, 1]
unique_list = list(set(my_list))
print(unique_list) # Saída: [1, 2, 3, 4, 5] (a ordem pode variar)
A concisão e a eficiência deste método derivam da natureza otimizada das operações de conjuntos. No entanto, esteja ciente de que a ordem da lista de saída pode diferir da original.
Desduplicando uma Lista (Ordenada)
Manter a ordem original requer uma abordagem um pouco mais complexa. Itaremos pela lista, rastreando os elementos vistos usando um conjunto. Apenas os elementos ainda não encontrados são adicionados a uma nova lista.
my_list = [1, 2, 2, 3, 4, 4, 5, 1]
seen = set()
unique_list = []
for item in my_list:
if item not in seen:
unique_list.append(item)
seen.add(item)
print(unique_list) # Saída: [1, 2, 3, 4, 5] (ordem original preservada)
Este método itera uma vez, usando o conjunto seen
para pesquisas eficientes de caso médio O(1), garantindo bom desempenho mesmo para listas grandes. A principal vantagem é a preservação da ordem original.
Escolhendo o Método Certo:
Priorize o segundo método (ordenado) quando a preservação da ordem original for crucial. Se a ordem for irrelevante, o primeiro método (não ordenado) oferece velocidade e simplicidade superiores. Para listas extremamente grandes onde o desempenho é primordial e a ordem não é importante, a abordagem baseada em conjuntos é a clara vencedora.