web-dev-qa-db-fra.com

python trouver la différence entre deux listes

Je suis nouveau dans la programmation mais je continue d'apprendre, et récemment j'ai heurté le mur donc je demande de l'aide. Désolé si cela a été discuté auparavant, mais je ne trouve pas de réponse à mon problème. J'ai deux listes. Et je dois les comparer, et dans le résultat pour obtenir les objets qui NE correspond PAS. Par exemple:

a = [1,2,3,4,5,6]
b = [1,2,3,4,5,6,7,8,9]
result = [7,8,9].

Et je ne trouve que du code et des exemples qui renvoient des correspondances. Ce dont je n'ai pas besoin.

Les listes sont dans le fichier notepad file.txt pour vous les gens à garder à l'esprit si vous cela vous aide à m'aider. :)

14
K00764

Vous pouvez convertir les listes en ensembles et exécuter les opérations habituelles set telles que la différence ou la différence symétrique. Par exemple, set(b) - set(a) correspond à set([7, 8, 9]).

17
user4815162342

Si le deuxième ensemble n'est pas toujours un sous-ensemble du premier, alors l'opérateur de différence "-" peut ne pas toujours renvoyer ce que vous attendez.

Par exemple.

[1,2,3,4,5] - [3,4,5,6,7] = [1,2]

Si vous voulez un ensemble d'éléments dans l'une ou l'autre liste mais pas dans les deux listes, utilisez l'opérateur de différence symétrique '^'.

[1,2,3,4,5] ^ [3,4,5,6,7] = [1,2,6,7]

L'opérateur de différence symétrique, en supposant qu'il fait ce que vous voulez, a également l'avantage d'être commutatif. Cela signifie que vous n'avez pas besoin de déterminer dans quel ordre comparer les ensembles comme vous le faites avec l'opérateur de différence.

http://docs.python.org/2/library/stdtypes.html#set

10
Dan Bechard