Intersection des listes en Python

Muhammad Maisam Abbas 10 octobre 2023
  1. Obtenir une intersection de liste en Python avec l’opérateur &
  2. Obtenir l’intersection des listes en Python avec la méthode intersection()
Intersection des listes en Python

Dans ce tutoriel, nous allons discuter de plusieurs méthodes pour obtenir l’intersection entre deux listes en Python.

Intersection (ou AND) est à la base une opération spécifiquement conçue pour sets. Elle fonctionne en sélectionnant les éléments communs à deux ensembles. Par exemple,

setA = {1, 2, 3, 4, 5}
setB = {0, 2, 4, 6}

print(setA & setB)

Production :

{2, 4}

Dans l’exemple ci-dessus, setA et setB sont deux ensembles, et l’opérateur & effectue une opération d’intersection sur les ensembles.

Par défaut, Python ne supporte pas l’intersection directe sur les listes. Mais avec un petit ajustement, nous pouvons aussi effectuer des intersections sur des listes.

Obtenir une intersection de liste en Python avec l’opérateur &

L’opérateur &, tel que mentionné ci-dessus, ne peut pas être utilisé avec des listes. Nous devons donc transformer nos listes en ensembles en utilisant la méthode set().

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set1 & set2
list3 = list(set3)

print(list3)

Production :

[2, 4]

La fonction set() convertit une liste en un ensemble. L’opération & renvoie un ensemble qui contient tous les éléments communs aux deux ensembles. Comme nous le savons, nous devons effectuer cette opération sur des listes plutôt que sur des ensembles. Nous devons donc convertir cet ensemble en une liste en utilisant la fonction list().

Obtenir l’intersection des listes en Python avec la méthode intersection()

La intersection() méthode de la classe set est une autre façon d’effectuer des intersections sur des ensembles en Python. Comme l’opérateur &, elle est également limitée aux seuls ensembles. Mais en convertissant la list1 en un ensemble, nous pouvons aussi utiliser intersection() avec la list1.

list1 = [1, 2, 3, 4, 5]
list2 = [0, 2, 4, 6]

set1 = set(list1)
set2 = set(list2)

set3 = set(list1).intersection(list2)
list3 = list(set3)

print(list3)

Production :

[2, 4]

La méthode intersection() renvoie également un ensemble de tous les éléments communs. Nous devons donc le convertir en une liste en utilisant la fonction list().

Obtenir l’intersection de la liste en Python avec les compréhensions de la liste

Les deux méthodes évoquées ci-dessus sont conçues pour fonctionner avec des ensembles plutôt qu’avec des listes. Comme nous savons tous qu’un ensemble ne peut pas avoir de valeurs récurrentes et que ses éléments ne sont pas triés, ces fonctions ne fonctionnent pas bien si nous avons des valeurs récurrentes dans nos listes ou si nous voulons conserver l’ordre dans nos listes.

Les inconvénients des deux méthodes précédentes sont démontrés dans cet exemple de codage.

list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]

setintersection = list(set(list1) & set(list2))
intersectionmethod = list(set(list1).intersection(list2))

print("The result of set intersection :")
print(setintersection)
print("The result of intersection() method :")
print(intersectionmethod)

Production :

The result of set intersection :
[2, 4]
The result of intersection() method :
[2, 4]

Comme indiqué ci-dessus, nous nous attendons à ce que [2, 2, 4] soit le bon résultat, mais nous n’obtenons que [2, 4].

La compréhension de liste est une autre façon d’effectuer l’opération AND sur les listes en Python. Elle peut gérer des valeurs récurrentes et aussi conserver l’ordre des éléments, qui n’est pas conservé dans les deux méthodes ci-dessus.

# Solution 2 Using list comprehensions
list1 = [1, 2, 3, 2, 4, 5]
list2 = [0, 2, 2, 4, 6]
list3 = [x for x in list1 if x in list2]
# all the x values that are in A, if the X value is in B
print(list3)

Production :

[2, 2, 4]
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Python List