En Python, quelle est la meilleure façon de calculer la différence entre deux listes ?
exemple
A = [1,2,3,4]
B = [2,5]
A - B = [1,3,4]
B - A = [5]
En Python, quelle est la meilleure façon de calculer la différence entre deux listes ?
exemple
A = [1,2,3,4]
B = [2,5]
A - B = [1,3,4]
B - A = [5]
C'est de loin la meilleure solution. Un test sur des listes contenant ~6000 chaînes de caractères chacune a montré que cette méthode était presque 100x plus rapide que les compréhensions de listes.
Cela dépend de l'application : si la préservation de l'ordre ou de la duplication est importante, Roman Bodnarchuk peut avoir une meilleure approche. Pour la rapidité et le comportement pur des ensembles, celle-ci semble meilleure.
Utilisez set
si vous ne vous souciez pas de l'ordre des articles ou de leur répétition. Utilisez compréhensions de listes si vous le faites :
>>> def diff(first, second):
second = set(second)
return [item for item in first if item not in second]
>>> diff(A, B)
[1, 3, 4]
>>> diff(B, A)
[5]
>>>
@Pencilcheck - pas si vous vous souciez de l'ordre ou de la duplication dans l'application A. set
à B est inoffensif, mais l'appliquer à A
et utiliser le résultat au lieu de l'original A
ne l'est pas.
@NeilG Considérez-vous le temps consommé pour construire l'ensemble ? Dans mon cas (les deux listes ont environ 10 millions de chaînes), le temps nécessaire pour construire deux ensembles et les soustraire est considérablement plus important que celui nécessaire pour construire un ensemble et itérer sur la liste.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.