Comment trouver des doublons dans une liste en Python

Rayven Esplanada 16 novembre 2020
  1. Utilisez la fonction set() pour supprimer les doublons dans une liste en Python
  2. Utilisez le module iteration_utils pour trouver les doublons dans une liste Python
Comment trouver des doublons dans une liste en Python

Ce tutoriel vous montre comment rechercher des doublons dans une liste en Python.

Utilisez la fonction set() pour supprimer les doublons dans une liste en Python

Python set() est une fonction qui permet de convertir une liste en un ensemble. Basée sur la description d’un ensemble et d’une liste, la conversion d’une liste en un ensemble signifierait la suppression de tous les doublons dans la liste.

Cependant, ce que nous voulons, c’est rechercher les entrées de la liste qui sont des doublons. Pour ce faire, nous utilisons toujours la fonction set(), mais nous n’incluons dans la liste que celles qui ont plus d’une entrée, ce qui signifie que ce sont des entrées qui ont des doublons.

Déclarer une fonction qui recherche les doublons dans une liste et les stocker comme un ensemble.

def listToSet(listNums):
    set([num for num in listNums if listNums.count(x) > 1])

Une autre approche, si vous voulez garder le résultat sous forme de liste au lieu d’un ensemble, consiste à utiliser les fonctions set() et add() pour trouver les doublons dans la liste et la reconvertir en liste lors du retour.

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)

Cette fonction ajoute l’entrée à once si le nombre apparaît pour la première fois, et n’existe pas dans l’ensemble once.

Les deux fonctions retourneront la même sortie, bien que l’une soit un ensemble, et l’autre une liste. Le résultat affichera toutes les entrées en double dans les “listNums”.

[1, 3, 5, 8]

Utilisez le module iteration_utils pour trouver les doublons dans une liste Python

iteration_utils a deux fonctions qui peuvent rechercher des doublons dans une fonction prédéfinie : duplicates et unique_everseen.

Nous allons utiliser la même définition de liste listNums ci-dessus.

Importez des duplicates depuis iteration_utils et utilisez-les pour retourner une liste de tous les duplicates dans 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 sortie de la fonction ci-dessus retournera une liste de toutes les entrées dupliquées dans la listNums.

[1, 1, 3, 3, 5, 5, 5, 5, 8, 8]

Cependant, la liste inclut également les itérations des entrées dupliquées. Cela signifie qu’elle renverra chaque instance de l’entrée dupliquée.

  • C’est là qu’intervient unique_everseen. Cette fonction traite la liste pour supprimer toutes les instances dupliquées que duplicates() retourne.
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)))

Cette fonction retournera ensuite :

[1, 3, 5, 8]

En résumé, il y a 2 solutions faciles pour rechercher les doublons dans une liste en Python. La première consiste à utiliser set() et d’autres fonctions utilitaires des ensembles en Python pour rechercher les doublons et les stocker dans une autre variable. Une autre est par le module iteration_utils en utilisant duplicates et unique_everseen, qui fait plus ou moins la même chose et produit la même sortie.

Rayven Esplanada avatar Rayven Esplanada avatar

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

Article connexe - Python List