Dans ce tutoriel, nous allons découvrir deux méthodes pythoniques pour trouver la différence entre deux listes. L’une de ces méthodes consiste à utiliser l’ensemble Python. Elle convertit d’abord les listes en ensembles et en extrait la partie unique.
D’autres méthodes non set comparent deux listes élément par élément et rassemblent les uniques. Nous pouvons les mettre en œuvre en utilisant des boucles for imbriquées et avec la compréhension de liste.
A propos, si vous n’êtes pas au courant des ensembles en Python, alors suivez le tutoriel ci-dessous. Il vous présenterait rapidement la façon dont Python met en œuvre la forme mathématique de Set.
Python Set
Python Ways to Find the Difference Between Two Lists
Python Set semble être le choix le plus évident pour identifier le commun ainsi que la différence de deux listes. Nous allons donc l’explorer dans un premier temps, puis nous utiliserons les boucles imbriquées et la compréhension des listes.
Avant de passer à la partie solution, définissons les paramètres du test, à savoir , les deux listes dont nous devons trouver la différence.
# Test Inputlist_a = list_b =
Et nous voulons que notre solution fournisse la sortie suivante :
# Expected Result# list_out = list_a - list_blist_out =
Commençons à créer un programme pour trouver la différence entre deux listes, en utilisant d’abord les ensembles.
Utiliser set() pour trouver la différence de deux listes
Dans cette approche, nous allons d’abord dériver deux SETs (disons set1 et set2) à partir des LISTs (disons list1 et list2) en les passant à la fonction set(). Ensuite, nous effectuerons l’opération de différence entre les ensembles. Elle retournera les éléments de la liste1 qui n’existent pas dans la seconde.
Voici l’exemple de programme Python pour obtenir la différence de deux listes.
"""Desc: Using set() to find the difference between two lists in Python"""def list_diff(list1, list2): return (list(set(list1) - set(list2))) # Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Après l’avoir exécuté, vous devriez voir le résultat suivant :
Sans set(), en utilisant des boucles imbriquées
Dans cette méthode, nous utiliserons des boucles For imbriquées pour comparer chaque élément de la première liste avec la seconde. Et tout en parcourant, nous ajouterons chaque élément non correspondant à une nouvelle liste (et vide).
La nouvelle liste comprendrait finalement la différence entre les deux séquences données. Voici l’exemple de programme pour démontrer cette approche.
"""Desc: Nested loop to find the difference between two lists in Python"""def list_diff(list1, list2): out = for ele in list1: if not ele in list2: out.append(ele) return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Après avoir exécuté le programme ci-dessus, vous devriez voir le résultat suivant :
Sans set(), en utilisant la compréhension de liste
C’est presque une technique similaire que nous avons utilisée dans la précédente. Ici, nous avons remplacé les boucles imbriquées par la syntaxe de compréhension de liste.
Voyez l’exemple ci-dessous.
"""Desc: List comprehension to find the difference between two lists in Python"""def list_diff(list1, list2): out = return out# Test Inputlist1 = list2 = # Run Testprint(list_diff(list1, list2))
Après avoir exécuté le programme ci-dessus, vous devriez voir le résultat suivant:
.