Cómo encontrar duplicados en una lista en Python
-
Utilice la función
set()
para eliminar los duplicados en una lista en Python -
Utilice el módulo
iteration_utils
para encontrar duplicados en una lista de Python
Este tutorial muestra cómo buscar duplicados dentro de una lista en Python.
Utilice la función set()
para eliminar los duplicados en una lista en Python
Python set()
es una función para convertir una lista en un conjunto. Basándose en la descripción de un conjunto y una lista, convertir una lista en un conjunto significaría eliminar todos los duplicados de la lista.
Sin embargo, lo que queremos es buscar las entradas de la lista que son duplicadas. Para ello, seguimos usando la función set()
, pero sólo incluimos las que tienen más de una entrada en la lista, lo que significa que son entradas que tienen duplicados.
Declarar una función que busca duplicados dentro de una lista y almacenarlos como un conjunto.
def listToSet(listNums):
set([num for num in listNums if listNums.count(x) > 1])
Otra aproximación, si quiere mantener el resultado como una lista en lugar de un conjunto, es usar set()
y add()
para encontrar duplicados dentro de la lista y reconvertirla a una lista durante el retorno.
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 función añade la entrada a once
si el número aparece por primera vez, y no existe dentro del conjunto once
.
Ambas funciones devolverán la misma salida, aunque una es un conjunto, y otra es una lista. El resultado dará como resultado todas las entradas duplicadas en listNums
.
[1, 3, 5, 8]
Utilice el módulo iteration_utils
para encontrar duplicados en una lista de Python
iteration_utils
tiene dos funciones que pueden buscar duplicados dentro de una función predefinida: duplicates
y unique_everseen
.
Vamos a usar la misma definición de lista listNums
de arriba.
Importar duplicates
de iteration_utils
y usarla para devolver una lista de todos los duplicados 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))
La salida de la función anterior devolverá una lista de todas las entradas duplicadas dentro de listNums
.
[1, 1, 3, 3, 5, 5, 5, 5, 8, 8]
Aunque, la lista también incluye las iteraciones de las entradas duplicadas. Esto significa que devolverá cada instancia de la entrada duplicada.
- Aquí es donde entra
unique_everseen
. Esta función procesa la lista para eliminar todas las instancias duplicadas queduplicates()
devuelve.
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 función entonces regresará:
[1, 3, 5, 8]
En resumen, hay 2 soluciones fáciles para buscar duplicados dentro de una lista en Python. La primera es usar set()
y otras funciones de utilidad de los conjuntos en Python para buscar duplicados y almacenarlos en otra variable. Otra es mediante el módulo iteration_utils
usando duplicates
y unique_everseen
, que más o menos hace lo mismo y produce la misma salida.
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.
LinkedInArtículo relacionado - Python List
- Convertir un diccionario en una lista en Python
- Eliminar todas las apariciones de un elemento de una lista en Python
- Eliminar duplicados de una lista en Python
- Cómo obtener el promedio de una lista en Python
- ¿Cuál es la diferencia entre los métodos de lista que añaden y amplían
- Cómo convertir una lista en cadena en Python