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.
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]
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é.
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]