Comment supprimer les éléments communs entre deux listes en python ?

Published: 03 octobre 2022

Tags: Python; List;

DMCA.com Protection Status

Exemples de comment supprimer les éléments communs entre deux listes en python:

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