En Python, déterminer si des éléments d'une liste existent dans une autre est essentiel pour diverses tâches de manipulation de données. Cet article explore différentes méthodes pour tester ce chevauchement, évaluer leur efficacité et fournir les meilleures pratiques.
1. Expression génératrice
any(i in a for i in b)
Cette méthode parcourt une liste et vérifie l'appartenance à l'autre, renvoyant True si une correspondance est trouvé. Sa complexité temporelle est O(n), où n est la longueur de la plus grande liste.
2. Set Intersection
bool(set(a) & set(b))
Cette approche convertit les deux listes en ensembles et trouve leur intersection. Si l'intersection n'est pas vide, elle renvoie True. La complexité temporelle dans le pire des cas est O(n m), où n et m sont les longueurs des listes.
3. Intersection d'ensemble hybride
a = set(a)
any(i in a for i in b)
Cette méthode convertit une seule liste en un ensemble et parcourt l'autre, vérifiant l'appartenance à l'ensemble. Il évite la création d'ensembles intermédiaires, ce qui le rend plus rapide que l'intersection d'ensembles traditionnelle.
4. Méthode Isdisjoint
not set(a).isdisjoint(b)
Cette approche utilise la méthode isdisjoint des ensembles gelés pour déterminer s'ils ont des éléments communs. Si ce n’est pas le cas, le résultat est Faux ; sinon, c'est vrai.
Pire des cas :
Dans la plupart des cas, la méthode isdisjoint est la plus rapide car elle bénéficie de vérifications d'appartenance à un ensemble de temps constant.
Meilleur cas pour l'expression du générateur :
Facteurs à prendre en compte :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3