Comment effectuer une soustraction de liste en Python

Rayven Esplanada 10 octobre 2023
  1. Convertir la liste en set pour effectuer une soustraction de liste en Python
  2. Utiliser la compréhension de liste pour obtenir la différence de liste en Python
Comment effectuer une soustraction de liste en Python

Ce tutoriel montre comment effectuer la soustraction de liste, ou en d’autres termes, la liste moins la liste en Python.

Comme défini par la théorie des ensembles en mathématiques, la différence entre deux ensembles fait référence aux éléments d’un ensemble qui n’existent pas dans l’autre ensemble.

Par exemple, si nous déclarons ces deux listes :

list1 = [1, 2, 4]
list2 = [2, 3]

La différence entre list1 - list2 serait [1, 4], tandis que list2 - list1 serait [3].

Convertir la liste en set pour effectuer une soustraction de liste en Python

Les opérations de la théorie des ensembles sont supportées en Python. Cependant, seul le type de données set supporte ces opérations. Par conséquent, pour utiliser l’opération set, les listes doivent être converties en sets. Ceci est possible en enroulant une liste autour de la fonction set().

Remarque: La conversion d’une liste en un ensemble supprime tout type d’ordre et élimine les valeurs en double de la liste.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

print("A - B = ", setA - setB)

Production :

A - B =  {1, 4, 9, 14}

Le résultat produit la différence entre les deux ensembles et supprime les valeurs en double.

Nous pouvons utiliser la fonction list() pour convertir le résultat d’un set en une liste.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

list_diff = list(setA - setB)

print("A - B: ", list_diff)

Production :

A - B:  [1, 4, 9, 14]

Utiliser la compréhension de liste pour obtenir la différence de liste en Python

La compréhension de liste peut être utilisée pour vérifier si un élément n’existe que dans la première liste mais n’existe pas dans la seconde. Cette solution permet d’effectuer l’opération de différence sans convertir la liste en un ensemble.

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]

listSub = [elem for elem in listA if elem not in listB]

print("A - B =", listSub)

Production :

A - B = [1, 4, 9, 14, 14]

Cette solution ne perturbe pas l’ordre de la liste et supprime les doublons.

Cependant, la valeur 11 est répétée deux fois dans la listA, et les deux itérations de 11 sont supprimées du résultat de A - B puisque 11 existe dans les deux ensembles. Ce comportement est conforme aux attentes.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Article connexe - Python List