5 méthodes pour supprimer les éléments en double des listes Python
Publié: 2022-07-05Dans ce didacticiel, vous apprendrez à supprimer les éléments en double des listes Python.
Lorsque vous travaillez avec des listes en Python, vous devrez parfois travailler uniquement avec des éléments uniques dans la liste, en supprimant les doublons.
Il existe plusieurs façons de procéder. Dans ce didacticiel, nous allons passer en revue cinq de ces techniques.
Principes de base des listes Python
Commençons notre discussion en passant en revue les bases des listes Python.
Les listes Python sont modifiables. Vous pouvez donc les modifier sur place en ajoutant et supprimant des éléments de la liste. De plus, les listes Python sont des collections d'éléments qui ne sont pas nécessairement uniques.
Alors, comment ne conserver que les éléments uniques et supprimer les éléments en double ou répétitifs ?
Eh bien, vous pouvez le faire de différentes manières. Vous pouvez soit créer une nouvelle liste contenant uniquement les éléments uniques de la liste d'origine. Ou vous pouvez choisir de modifier la liste d'origine en place et de supprimer les éléments en double.
Nous allons les apprendre en détail dans ce tutoriel.
Méthodes pour supprimer les doublons des listes Python
Prenons un exemple concret. Supposons que vous soyez à la fête d'anniversaire de votre ami.
Dans la collection de bonbons affichée, vous voyez qu'il y a des éléments qui se répètent. Vous souhaitez maintenant supprimer ces éléments en double de la liste des bonbons.

Créons une liste de sweets contenant tous les éléments de l'image ci-dessus.
sweets = ["cupcake","candy","lollipop","cake","lollipop","cheesecake","candy","cupcake"] Dans la liste de sweets ci-dessus, les éléments « bonbon » et « cupcake » sont répétés deux fois. Utilisons cette liste d'exemples pour supprimer les éléments en double.
Itérer sur les listes Python pour supprimer les doublons
La méthode la plus simple consiste à créer une nouvelle liste qui contient chaque élément exactement une fois.
Lisez la cellule de code ci-dessous :
unique_sweets = [] for sweet in sweets: if sweet not in unique_sweets: unique_sweets.append(sweet) print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']- Nous initialisons une liste vide
unique_sweets. - En parcourant la
sweets list, nous accédons à chaquesweet. - Si
sweetn'est pas déjà présent dans la listeunique_sweets, nous l'ajoutons à la fin de la listeunique_sweetsen utilisant la méthode.append().
Supposons que vous rencontriez un élément répétitif, par exemple, la deuxième occurrence de "bonbon" dans la liste des sweets . Ceci n'est pas ajouté à la liste unique_sweets car il est déjà présent : sweet not in unique_sweets évalué à False pour la deuxième occurrence de 'cupcake' et 'candy'.
Par conséquent, dans cette méthode, chaque élément apparaît exactement une fois dans la liste unique_sweets , sans aucune répétition.
Utiliser la compréhension de liste pour supprimer les doublons
Vous pouvez également utiliser la compréhension de liste pour remplir la liste unique_sweets .
Vous voulez rafraîchir les bases de la compréhension des listes ?
️ Découvrez le tutoriel sur la compréhension des listes en Python.
Utilisons l'expression de compréhension de liste : [sortie pour l'élément dans itérable si la condition est vraie] pour réécrire la boucle ci-dessus de manière concise.
unique_sweets = [] [unique_sweets.append(sweet) for sweet in sweets if sweet not in unique_sweets] print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake'] Même si vous créez une nouvelle liste, vous ne remplissez pas la liste créée avec des valeurs. C'est parce que la sortie est l'opération .append() à la liste unique_sweets .
Pour supprimer les éléments en double des listes Python, vous pouvez également utiliser des méthodes de liste intégrées, et nous aborderons cela dans la section suivante.
Utiliser les méthodes de liste intégrées pour supprimer les doublons
Vous pouvez utiliser les méthodes de liste Python .count() et .remove() pour supprimer les éléments en double.
– Avec la syntaxe list.count(value) , la méthode
.count()renvoie le nombre de foisvalueapparaît danslist. Ainsi, le nombre correspondant aux éléments répétitifs sera supérieur à 1.– list.remove(value) supprime la première occurrence de value de la liste.
En utilisant ce qui précède, nous avons le code suivant.
for sweet in sweets: # check if the count of sweet is > 1 (repeating item) if sweets.count(sweet) > 1: # if True, remove the first occurrence of sweet sweets.remove(sweet) print(sweets) # Output ['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake'] Étant donné que la méthode .remove() supprime uniquement la première occurrence d'une valeur, vous ne pouvez pas l'utiliser pour supprimer des éléments qui apparaissent plus de deux fois.
- Si un élément particulier est dupliqué (se produit exactement deux fois), cette méthode supprime la première occurrence.
- Si un élément particulier est répété
Kfois, alors après avoir exécuté le code ci-dessus, les répétitionsK-1resteront.
Mais en général, lorsque nous disons doublons, nous nous référons généralement à toutes les répétitions.
Pour gérer ce cas, vous pouvez modifier la boucle ci-dessus pour supprimer toutes les répétitions sauf une. Au lieu d'utiliser une if conditionnelle if pour vérifier le nombre d'un élément particulier, vous pouvez exécuter une boucle while pour supprimer à plusieurs reprises les doublons jusqu'à ce que le nombre de chaque élément de la liste soit égal à 1.

La liste des sweets contient maintenant 2 répétitions de 'cupcake' et 3 répétitions de 'candy'.
sweets = ["cupcake","candy","lollipop","cake","lollipop","candy","cheesecake","candy","cupcake"] Vous pouvez utiliser une boucle while pour supprimer les répétitions, comme indiqué ci-dessous. La boucle while continue de s'exécuter tant que le nombre de bonbons dans les bonbons est supérieur à 1. Lorsqu'il ne reste qu'une seule occurrence, la condition sweets.count(sweet) > 1 devient False et la boucle passe à l'élément suivant.
for sweet in sweets: # check if the count of sweet is > 1 (repeating item) while(sweets.count(sweet) > 1): # repeatedly remove the first occurrence of sweet until one occurrence remains. sweets.remove(sweet) print(sweets) # Output ['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']Mais l'utilisation de boucles imbriquées peut ne pas être très efficace, vous pouvez donc envisager d'utiliser l'une des autres techniques décrites si vous travaillez avec de grandes listes.
Jusqu'à présent, nous avons appris ce qui suit :
- Méthodes pour supprimer les éléments en double des listes Python - en créant de nouvelles listes - contenant uniquement des éléments uniques
- Méthodes de liste
.count()et.remove()pour modifier la liste en place
Certaines structures de données intégrées à Python exigent que les valeurs soient toutes uniques, sans répétition. Par conséquent, nous pouvons convertir une liste Python en l'une de ces structures de données pour supprimer les doublons. Et puis les reconvertir en une liste. Nous apprendrons comment procéder dans les sections à venir.
Convertir la liste Python en un ensemble pour supprimer les doublons
Les ensembles Python sont des collections d'éléments qui sont tous uniques . Par conséquent, le nombre d'éléments présents dans l'ensemble (donné par len(<set-obj> ) est égal au nombre d'éléments uniques présents.
Vous pouvez convertir n'importe quel itérable Python en un ensemble en utilisant la syntaxe :
set(iterable).
Maintenant, jetons la liste des bonbons dans un ensemble et examinons la sortie.
set(sweets) # Output {'cake', 'candy', 'cheesecake', 'cupcake', 'lollipop'}À partir de la sortie dans la cellule de code ci-dessus, nous voyons que chaque élément apparaît exactement une fois et que les doublons ont été supprimés.
Aussi, notez que l'ordre des articles n'est pas nécessairement le même que leur ordre dans la liste originale des bonbons. En effet, en plus d'être une collection d'éléments uniques, un objet d'ensemble Python est une collection non ordonnée .
Maintenant que nous avons supprimé les doublons en transformant la liste en un ensemble, nous pouvons à nouveau la convertir en liste, comme indiqué ci-dessous.
unique_sweets = list(set(sweets)) print(unique_sweets) # Output ['cake', 'cheesecake', 'candy', 'cupcake', 'lollipop']Utiliser les éléments de liste comme clés de dictionnaire pour supprimer les doublons
Le dictionnaire Python est une collection de paires clé-valeur où les clés identifient de manière unique les valeurs.
Vous pouvez créer un dictionnaire Python en utilisant la méthode .fromkeys() avec la syntaxe : dict.fromkeys(keys, values) . Ici, les keys et les values sont des itérables contenant respectivement les clés et les valeurs du dictionnaire.
-
keysest un paramètre obligatoire , et il peut s'agir de n'importe quel itérable Python correspondant aux clés du dictionnaire. -
valuesest un paramètre facultatif . Si vous ne spécifiez pas les valeurs itérables, la valeur par défautNoneest utilisée.
Sans spécifier les valeurs, dict.fromkeys(sweets) renvoie un dictionnaire Python où les valeurs sont définies sur None - la valeur par défaut. La cellule de code ci-dessous explique cela.
dict.fromkeys(sweets) # Output {'cake': None, 'candy': None, 'cheesecake': None, 'cupcake': None, 'lollipop': None}Comme pour la section précédente, nous pouvons à nouveau convertir le dictionnaire en liste, comme indiqué ci-dessous.
unique_sweets = list(dict.fromkeys(sweets)) print(unique_sweets) # Output ['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake'] À partir de la sortie ci-dessus, nous pouvons voir que les éléments en double ont été supprimés de la liste sweets .
Résumé
Voici un récapitulatif des différentes méthodes que vous pouvez utiliser pour supprimer les éléments en double ou les répétitions des listes Python.
- Utilisez la méthode de liste Python .append() pour ajouter des éléments non répétitifs à une nouvelle liste. La nouvelle liste contient chaque élément de la liste d'origine exactement une fois et supprime toutes les répétitions. Vous pouvez également le faire en utilisant la compréhension de liste.
- Utilisez les méthodes intégrées .count() et .remove() pour supprimer les éléments qui se produisent exactement deux fois. La même chose peut être placée dans une boucle while pour supprimer toutes les occurrences supplémentaires.
- Transformez une liste Python en un ensemble pour ne conserver que les éléments uniques.
- Utilisez dict.fromkeys(list) pour supprimer tous les doublons de la liste car il ne devrait pas y avoir de clés de répétition du dictionnaire.
Ensuite, consultez les projets Python pour vous entraîner et apprendre. Ou apprenez à trouver l'index d'un élément dans les listes Python. Bon apprentissage!
