Exemples de comment supprimer les éléments communs entre deux listes en python:
Table des matières
Créer des listes en python
Considérons les listes suivantes :
a = [1,1,2,3,4,5,6]
b = [2,4]
c = [2,4,7,8]
Supprimer les éléments communs à l'aide de l'opérateur python ^
Pour supprimer les éléments communs entre les listes a et b, une solution consiste à utiliser python ^ operator:
list( set(a)^set(b) )
donne ici
[1, 3, 5, 6]
et
list( set(a)^set(c) )
donne
[1, 3, 5, 6, 7, 8]
Notez qu'avec cette approche, les éléments en double sont supprimés.
Supprimez les éléments communs à l'aide d'une "list comprehension"
Une autre solution consiste à utiliserintersection():
list( set(a).intersection(b) )
donne
[2, 4]
list( set(a).intersection(c) )
donne aussi
[2, 4]
avec une "list comprehension":
new_a = [e for e in a if e not in list( set(a).intersection(b) )]
new_b = [e for e in b if e not in list( set(a).intersection(b) )]
print(new_a)
print(new_b)
donne
[1, 1, 3, 5, 6]
[]
Pour éviter de créer de nouvelles listes :
for e in a:
if e in i:
a.remove(e)
donne
[1, 1, 3, 5, 6]
Supprimer les éléments communs en utilisant la différence
Une autre solution
list( set(a).difference(b) )
donne
[1, 3, 5, 6]
Pareil que
list( set(a) - set(b) )
donne
[1, 3, 5, 6]
Vérifiez si une liste est un sous-ensemble d'une autre liste
Remarque : il existe différentes approches pour supprimer les éléments communs entre deux listes. Il peut être utile de vérifier d'abord si une liste est un sous-ensemble d'une autre :
set(b).issubset(set(a))
ici ça donnera :
True
tandis que
set(c).issubset(set(a))
donne
False
Références
Liens | Site |
---|---|
Removing common values from two lists in python | stackoverflow |
Remove common items from two lists (order is important!) | stackoverflow |
Python list subtraction operation | stackoverflow |