En Python, quelle est l'efficacité du mot clé in
, comme dans:
a = [1, 2, 3]
if 4 in a:
...
Cela dépend de la main droite opérande :
Les opérateurs
in
etnot in
Testent l'appartenance à la collection. [...] Le test d'appartenance à une collection est traditionnellement lié à des séquences; un objet est membre d'une collection si la collection est une séquence et contient un élément égal à cet objet. Cependant, il est logique que de nombreux autres types d'objets prennent en charge les tests d'appartenance sans être une séquence. En particulier, les dictionnaires (pour les clés) et les ensembles prennent en charge les tests d'appartenance.
Les classes peuvent implémenter méthode spéciale __contains__
pour remplacer le comportement par défaut (itérer sur la séquence) et peuvent ainsi fournir un moyen plus (ou moins) efficace de tester l'appartenance que de comparer chaque élément de le conteneur.
Les opérateurs de test d'appartenance (
in
etnot in
) Sont normalement implémentés comme une itération à travers une séquence. Cependant, les objets conteneurs peuvent fournir la méthode spéciale suivante avec une implémentation plus efficace, qui ne nécessite pas non plus que l'objet soit une séquence.
Puisque vous avez une liste dans votre exemple, elle est itérée et chaque élément est comparé jusqu'à ce qu'une correspondance soit trouvée ou que la liste soit épuisée. La complexité temporelle est généralement O(n)
.
La complexité des listes est:
O(n)
Pour les sets c'est:
O(1)