Encontrar duplicados numa lista em Python
-
Utilize o
set()
Função para remover duplicados de uma lista em Python -
Utilize o módulo
iteration_utils
para encontrar duplicados numa lista Python
Este tutorial mostra-lhe como procurar por duplicados dentro de uma lista em Python.
Utilize o set()
Função para remover duplicados de uma lista em Python
Python set()
é uma função para converter uma lista em um array. Com base na descrição de um array e de uma lista, a conversão de uma lista num array significaria a remoção de todas as duplicações da lista.
No entanto, o que queremos é procurar as entradas dentro da lista que são duplicados. Para tal, continuamos a utilizar a função set()
, mas só incluímos na lista as entradas com mais do que uma, o que significa que são entradas que têm duplicatas.
Declarar uma função que procura duplicatas dentro de uma lista e armazená-las como um array.
def listToSet(listNums):
set([num for num in listNums if listNums.count(x) > 1])
Outra abordagem, se se quiser manter o resultado como uma lista em vez de um array, é utilizar set()
e add()
para encontrar duplicados dentro da lista e reconvertê-los para uma lista durante a devolução.
def list_duplicates(listNums):
once = set()
seenOnce = once.add
twice = set(num for num in listNums if num in once or seenOnce(x))
return list(twice)
Esta função adiciona a entrada a once
se o número aparecer pela primeira vez, e não existe dentro do array once
.
Ambas as funções devolverão a mesma saída, embora uma seja um array, e outra seja uma lista. O resultado irá emitir todas as entradas duplicadas em listNums
.
[1, 3, 5, 8]
Utilize o módulo iteration_utils
para encontrar duplicados numa lista Python
O iteration_utils
tem duas funções que podem procurar duplicados dentro de uma função pré-definida: duplicates
e unique_everseen
.
Vamos utilizar a mesma definição de lista listNums
acima.
Importar duplicates
de iteration_utils
e utilizá-lo para devolver uma lista de todas as duplicatas dentro de listNums
.
from iteration_utils import duplicates
listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]
def listDups(listNums):
return list(duplicates(listNums))
A saída da função acima irá retornar uma lista de todas as entradas duplicadas dentro de listNums
.
[1, 1, 3, 3, 5, 5, 5, 5, 8, 8]
Embora, a lista também inclua as iterações das entradas duplicadas. Isto significa que devolverá cada instância da entrada duplicada.
- É aqui que entra o
unique_everseen
. Esta função processa a lista para remover todas as instâncias duplicadas queduplicates()
devolvem.
from iteration_utils import duplicates
from iteration_utils import unique_everseen
listNums = [1, 1, 2, 3, 3, 4, 5, 5, 5, 5, 6, 8, 8]
def listDupsUnique(listNums):
return list(unique_everseen(duplicates(listNums)))
Esta função irá então retornar:
[1, 3, 5, 8]
Em resumo, existem 2 soluções fáceis para procurar duplicados dentro de uma lista em Python. A primeira é utilizar set()
e outras funções utilitárias de conjuntos em Python para procurar duplicados e armazená-los noutra variável. Outra é através do módulo iteration_utils
utilizando duplicates
e unique_everseen
, que mais ou menos faz a mesma coisa e produz a mesma saída.
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn