Comme le titre l'indique, il peut arriver que vous souhaitiez vérifier si l'un des éléments d'une liste se trouve dans une autre. Dans mon cas, j'en avais besoin pour résoudre le problème CheckiO, mais je pense que j'aurai l'occasion de l'utiliser dans la pratique.
Lorsque j'ai recherché ce qui s'était passé, [Cet article de Stack Overflow](http://stackoverflow.com/questions/10668282/one-liner-to-check-if-at-least-one-item-in-list -exists-in-another-list), je vais donc vous présenter la méthode.
Le but est de créer une fonction qui a une liste a et une autre liste b, et retourne True si l'un des éléments de la liste a est dans la liste b et False si ce n'est pas le cas.
a = ['A', 'B']
b = ['B', 'C', 'D']
Vrai parce que 'B' dans la liste a existe dans la liste b
a = ['A', 'B']
b = ['C', 'D', 'E']
Faux car ni 'A' et 'B' de la liste a ne sont dans la liste b
def func1(a, b):
return any(i in b for i in a)
C'est une méthode utilisant any () et une expression de générateur. Utilisez for i in a
pour extraire les éléments i un par un, et utilisez ʻi in b` pour vérifier si l'élément i existe dans b. Puisqu'il utilise un générateur, il renvoie True lorsqu'il est connu qu'il existe.
def func2(a, b):
len(set(a) & set(b)) != 0
C'est une méthode pour convertir a et b en un ensemble et vérifier s'il y a une partie commune entre eux. C'est assez facile à lire.
def func3(a, b):
return not set(a).isdisjoint(b)
Utilisez isdisjoint (), qui est l'opposé de la méthode 2 et renvoie True si elle n'a pas de parties communes. Personnellement, je n'aime pas non plus.
Jusqu'à présent, j'ai résumé comment vérifier si l'un des éléments d'une liste se trouve dans une autre.
Je n'ai pas comparé les performances, mais je pense que c'est une bonne idée de choisir celle qui vous convient tout en considérant la lisibilité.
python - one-liner to check if at least one item in list exists in another list? - Stack Overflow
Recommended Posts