Recherche de site Web

Python Supprimer les doublons dans une liste


Il existe de nombreuses façons de supprimer les doublons d'une liste Python.

  • Utiliser une liste temporaire et faire une boucle
  • Utiliser la méthode intégrée set()
  • Utiliser des clés de dictionnaire
  • Liste de la fonction count()
  • Compréhension de liste

Suppression des doublons dans une liste

Une liste Python peut contenir des éléments en double. Examinons des exemples de suppression des éléments dupliqués de différentes manières.

1. Utilisation d'une liste temporaire

C'est la méthode de force brute pour supprimer les éléments dupliqués d'une liste. Nous allons créer une liste temporaire et y ajouter des éléments uniquement s'ils ne sont pas déjà présents.

ints_list = [1, 2, 3, 4, 3, 2]

temp = []

for x in ints_list:
    if x not in temp:
        temp.append(x)

ints_list = temp

print(f'Updated List after removing duplicates = {temp}')

Sortie: Liste mise à jour après suppression des doublons=[1, 2, 3, 4] Lecture recommandée: f-strings Python

2. fonction set()

L'ensemble Python n'a pas d'éléments dupliqués. Nous pouvons utiliser la fonction intégrée set() pour convertir la liste en un ensemble, puis utiliser la fonction list() pour la reconvertir en liste.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list1 = list(set(ints_list))
print(ints_list1)  # [1, 2, 3, 4]

3. Lister les éléments comme clés de dictionnaire

Nous savons que les clés des dictionnaires sont uniques. La classe dict a une fonction fromkeys() qui accepte un itérable pour créer le dictionnaire avec des clés provenant de l'itérable.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list2 = list(dict.fromkeys(ints_list))
print(ints_list2)  # [1, 2, 3, 4]

4. Fonction de comptage list() - pas recommandée

La méthode count() de la liste renvoie le nombre d'occurrences de la valeur. Nous pouvons l'utiliser avec la méthode remove() pour éliminer les éléments dupliqués de la liste.

ints_list = [1, 2, 3, 4, 3, 2]

for x in ints_list:
    if ints_list.count(x) > 1:
        ints_list.remove(x)
print(ints_list)  # [1, 2, 3, 4]

REMARQUE : Comme indiqué dans le commentaire ci-dessous, utiliser la fonction count() n'est pas recommandé lors de la suppression de l'élément du même itérateur car cela peut entraîner des résultats indésirables. Par exemple :

values = [87, 94, 45, 94, 94, 41, 65, 94, 41, 99, 94, 94, 94]

for x in values:
    if values.count(x) > 1:
        values.remove(x)
print(values)  # [87, 45, 65, 41, 99, 94, 94] - 94 is still present twice

5. Compréhension de liste

Nous pouvons créer une liste à partir d'un itérable en utilisant la compréhension de liste. Cette technique est la même que celle qui utilise une liste temporaire et la boucle for pour supprimer les éléments en double. Mais, elle réduit le nombre de lignes de code.

int_list = [1, 2, 3, 4, 3, 2]
temp = []
[temp.append(x) for x in ints_list if x not in temp]
print(temp)  # [1, 2, 3, 4]

Meilleure façon de supprimer les doublons d'une liste

Si vous ne voulez pas d'éléments en double, vous devriez utiliser un ensemble. Mais, si vous devez supprimer les valeurs en double d'une liste, alors je préférerais la fonction count() car elle ne crée pas un autre objet set ou liste temporaire. Ainsi, c'est plus efficace en mémoire.