Dans ce tutoriel, vous apprendrez à supprimer les éléments en double dans les listes Python.

Lorsque vous travaillez avec des listes en Python, vous pouvez parfois avoir besoin de ne travailler qu’avec des éléments uniques dans la liste – en supprimant les doublons.

Il existe plusieurs façons de procéder. Dans ce tutoriel, nous allons passer en revue cinq de ces techniques.

Les bases des listes Python

Commençons par passer en revue les principes de base des listes Python.

Les listes Python sont mutables. Vous pouvez donc les modifier sur place en ajoutant ou en supprimant des éléments de la liste. En outre, les listes Python sont des collections d’éléments qui ne sont pas nécessairement uniques.

Dès lors, comment conserver uniquement les éléments uniques et supprimer les éléments dupliqués ou répétitifs ?

Il y a plusieurs façons de procéder. Vous pouvez soit créer une nouvelle liste qui ne contient que les éléments uniques de la liste d’origine. Vous pouvez également choisir de modifier la liste d’origine et de supprimer les éléments en double.

Nous verrons ces méthodes en détail dans ce tutoriel.

Méthodes de suppression des doublons dans les 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 que certains éléments se répètent. Vous aimeriez maintenant supprimer ces éléments en double de la liste des bonbons.

remove-duplicate-from-list

Créons une liste de bonbons contenant tous les éléments de l’image ci-dessus.

sweets = ["cupcake", "candy", "lollipop", "cake", "lollipop", "cheesecake", "candy", "cupcake"]

Dans la liste de friandises ci-dessus, les éléments “bonbon” et “gâteau” sont répétés deux fois. Utilisons cet exemple de liste pour supprimer les éléments en double.

Itération sur les listes Python pour supprimer les doublons

La méthode la plus simple consiste à créer une nouvelle liste contenant 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)

# Sortie
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']
  • Nous initialisons une liste vide unique_sweets.
  • En parcourant la liste des sucreries, nous accédons à chacune d’entre elles.
  • Si le bonbon n’est pas déjà présent dans la liste unique_sweets, nous l’ajoutons à la fin de la liste unique_sweets à l’aide de la méthode .append().

Supposons que vous rencontriez un élément répétitif, par exemple la deuxième occurrence de “candy” dans la liste des sucreries. Cet élément n’est pas ajouté à la liste unique_sweets car il est déjà présent : sweet not in unique_sweets est évalué à False pour la deuxième occurrence de “cupcake” et de “candy”.

Par conséquent, avec cette méthode, chaque élément apparaît exactement une fois dans la liste unique_sweets, sans aucune répétition.

Utilisez la compréhension des listes pour supprimer les doublons

Vous pouvez également utiliser la compréhension de liste pour remplir la liste unique_sweets.

Vous souhaitez rafraîchir les bases de la compréhension de liste ?

▶️ Consultez le tutoriel sur la compréhension de liste en Python.

Utilisons l’expression de compréhension de liste : [output for item in iterable if condition is True] pour réécrire le bouclage 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)

# Sortie
['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. En effet, la sortie est l’opération .append() de la liste unique_sweets.

Pour supprimer les éléments en double des listes Python, vous pouvez également utiliser les méthodes de liste intégrées, que nous aborderons 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 d’occurrences de la valeur dans la liste. Le nombre correspondant aux éléments répétés sera donc supérieur à 1.

list.remove(value) supprime la première occurrence de la valeur dans la liste.

En utilisant ce qui précède, nous obtenons le code suivant.

for sweet in sweets :
  # vérifiez si le nombre de bonbons est > 1 (élément répétitif)
  if sweets.count(sweet) > 1 :
  # si True, supprimez la première occurrence de sweet
    sweets.remove(sweet)

print(bonbons)

# Sortie
['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']

Étant donné que la méthode .remove() ne supprime que 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é (il apparaît exactement deux fois), cette méthode supprime la première occurrence.
  • Si un élément particulier est répété K fois, il restera K-1 répétitions après l’exécution du code ci-dessus.

Mais en général, lorsque nous parlons de doublons, nous faisons référence à toutes les répétitions.

Pour traiter ce cas, vous pouvez modifier la boucle ci-dessus pour supprimer toutes les répétitions sauf une. Au lieu d’utiliser une condition if pour vérifier le nombre d’un élément particulier, vous pourriez exécuter une boucle while pour supprimer les doublons de manière répétée jusqu’à ce que le nombre de chaque élément de la liste soit égal à 1.

La liste 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 fonctionner tant que le nombre de bonbons dans les bonbons est supérieur à 1. Lorsqu’il ne reste plus qu’une occurrence, la condition sweets.count(sweet) > 1 devient False, et la boucle passe à l’élément suivant.

for sweet in sweets :
  # vérifiez si le nombre de bonbons est > 1 (élément répétitif)
  while(sweets.count(sweet) > 1) :
  # supprimez de façon répétée la première occurrence de sweet jusqu'à ce qu'il n'en reste plus qu'une.
    sweets.remove(sweet)

print(sweets)
# Sortie
['cake', 'lollipop', 'cheesecake', 'candy', 'cupcake']

Cependant, l’utilisation de boucles imbriquées peut ne pas être très efficace, vous pouvez donc envisager d’utiliser l’une des autres techniques abordées 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 ne contenant que des éléments uniques
  • Méthodes de liste intégrées .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 afin de supprimer les doublons. Puis les reconvertir en liste. Nous allons apprendre à le faire dans les sections suivantes.

Transformer une 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(itérable).

Maintenant, transformons la liste sweets en un ensemble et examinons le résultat.

set(bonbons)
# Résultat
{'cake', 'candy', 'cheesecake', 'cupcake', 'lollipop'}

La sortie de la cellule de code ci-dessus montre que chaque élément apparaît exactement une fois et que les doublons ont été supprimés.

Remarquez également que l’ordre des éléments n’est pas nécessairement le même que celui de la liste originale sweets. En effet, en plus d’être une collection d’éléments uniques, un objet set de 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 une liste, comme indiqué ci-dessous.

unique_sweets = list(set(sweets))
print(unique_sweets)

# Sortie
['cake', 'cheesecake', 'candy', 'cupcake', 'lollipop']

Utiliser les éléments de la liste comme clés du dictionnaire pour supprimer les doublons

Undictionnaire 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 clés et les valeurs sont des itérables contenant respectivement les clés et les valeurs du dictionnaire.

  • keys est un paramètre obligatoire et peut être n’importe quel itérable Python correspondant aux clés du dictionnaire.
  • values est un paramètre facultatif. Si vous ne spécifiez pas l’itérable values, la valeur par défaut None est utilisée.

Sans spécifier les valeurs, dict.fromkeys(sweets) renvoie un dictionnaire Python dans lequel les valeurs sont définies sur None – la valeur par défaut. La cellule de code ci-dessous explique cela.

dict.fromkeys(bonbons)

# Sortie
{'cake' : Aucun,
 'bonbon' : Aucun,
 'cheesecake' : Aucun,
 "cupcake" : Aucun,
 "sucette" : Aucun}

Comme dans 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)
# Sortie
['cupcake', 'candy', 'lollipop', 'cake', 'cheesecake']

Le résultat ci-dessus montre que les éléments en double ont été supprimés de la liste sweets.

Récapitulation de Up👩‍🏫

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 originale exactement une fois et supprime toutes les répétitions. Vous pouvez également effectuer cette opération en utilisant la compréhension de liste.
  • Utilisez les méthodes intégrées .count() et .remove( ) pour supprimer les éléments qui apparaissent exactement deux fois. La même méthode 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 doit pas y avoir de clés de répétition dans le dictionnaire.

Ensuite, consultez lesprojets Python pour vous entraîner et apprendre. Ou apprenez à trouver l’index d’un élément dans les listes Python. Bon apprentissage !