web-dev-qa-db-fra.com

Python - Utilisez 'set' pour trouver les différents éléments de la liste

J'ai besoin de comparer deux listes en Python, et je sais comment utiliser la commande set pour trouver des éléments similaires, mais existe-t-il une autre commande que je pourrais utiliser qui les comparerait automatiquement, au lieu d'avoir à coder pour cela?

Je voudrais trouver les articles qui ne sont pas dans chacun. Dites que la première liste est la suivante:

[1, 2, 3, 4, 5, 6] 

et la liste deux est:

[1, 2, 3, 4, 6]

Je veux découvrir que 5 est absent de la liste, espérons-le par une commande, mais je sais comment parcourir en boucle la comparaison.

38
RPiAwesomeness

On dirait que vous avez besoin d'une différence symétrique:

a = [1,2,3]
b = [3,4,5]

print(set(a)^set(b))


>>> [1,2,4,5]
35
tifon

Les docs sont un bon point de départ. Voici quelques exemples qui pourraient vous aider à déterminer comment comparer vos ensembles.

Pour trouver l'intersection (éléments qui se trouvent dans les deux ensembles):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a & b
set([4, 5, 6])

Pour trouver la différence (articles qui ne font qu'un dans un ensemble):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a - b
set([1, 2, 3])
>>> b - a
set([7, 8, 9])

Pour trouver la différence symétrique (éléments qui sont dans l'un ou l'autre, mais pas les deux):

>>> a = set([1, 2, 3, 4, 5, 6])
>>> b = set([4, 5, 6, 7, 8, 9])
>>> a ^ b
set([1, 2, 3, 7, 8, 9])

J'espère que ça t'as aidé.

59
Seth

Une simple compréhension de liste

In [1]: a=[1, 2, 3, 4, 5, 6] 

In [2]: b=[1, 2, 3, 4, 6]

In [3]: [i for i in a if i not in b]
Out[3]: [5]
5
Fredrik Pihl