Je vois des gens utiliser any
pour rassembler une autre liste afin de voir si un élément existe dans une liste, mais existe-t-il un moyen rapide de le faire ?:
if list.contains(myItem):
# do something
Vous pouvez utiliser cette syntaxe:
if myItem in list:
# do something
Aussi, opérateur inverse:
if myItem not in list:
# do something
Cela fonctionne très bien pour les listes, les n-uplets, les ensembles et les dict (clés de contrôle).
Note Il s'agit d'une opération O(n) dans les listes et les tuples, mais d'une opération O(1) dans les ensembles et les dict.
En plus de ce que d’autres ont dit, vous voudrez peut-être savoir que ce que in
appelle la méthode list.__contains__
, que vous pouvez définir dans n’importe quelle classe que vous écrivez et peut être extrêmement pratique à utiliser. python dans toute son étendue.
Une utilisation stupide peut être:
>>> class ContainsEverything:
def __init__(self):
return None
def __contains__(self, *elem, **k):
return True
>>> a = ContainsEverything()
>>> 3 in a
True
>>> a in a
True
>>> False in a
True
>>> False not in a
False
>>>
J'ai récemment proposé ce type de doublure pour obtenir True
si une liste contient un nombre quelconque d'occurrences d'un élément, ou False
si elle ne contient aucune occurrence ou rien du tout. Utiliser next(...)
donne à cela une valeur de retour par défaut (False
) et signifie qu'il devrait être exécuté beaucoup plus rapidement que la compréhension de la liste complète.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
La méthode de liste index
renverra -1
si l'élément n'est pas présent et renverra l'index de l'élément dans la liste s'il est présent. Vous pouvez également effectuer les opérations suivantes dans une instruction if
:
if myItem in list:
#do things
Vous pouvez également vérifier si un élément ne figure pas dans une liste avec l'instruction if suivante:
if myItem not in list:
#do things