Je vois que les gens utilisent 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 faire quelque chose comme ça ?
if list.contains(myItem):
# do something
Je vois que les gens utilisent 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 faire quelque chose comme ça ?
if list.contains(myItem):
# do something
Vous pouvez utiliser cette syntaxe :
if myItem in some_list:
# do something
Aussi, opérateur inverse :
if myItem not in some_list:
# do something
Il fonctionne bien pour les listes, les tuples, les ensembles et les dicts (clés de contrôle).
Note que c'est une opération O(n) dans les listes et les tuples, mais une opération O(1) dans les ensembles et les dicts.
Avec une liste contenant des tableaux numpy, cela vérifiera-t-il les instances numpy ou les valeurs à l'intérieur des instances numpy ?
Attention ! Cela correspond alors que c'est très probablement ce à quoi vous ne vous attendiez pas : o='--skip'; o in ("--skip-ias"); # returns True !
@AlexF : Cela correspond parce que ("--skip-ias")
n'est pas un tuple, mais une chaîne de caractères (les parenthèses ne font rien, tout comme (1)
est juste un nombre entier). Si vous voulez un 1-tuple, vous devez ajouter une virgule après l'élément unique : ("--skip-ias",)
(ou (1,)
).
En plus de ce que d'autres ont dit, vous serez peut-être intéressé de savoir que ce qui in
est d'appeler le list.__contains__
que vous pouvez définir sur n'importe quelle classe que vous écrivez et qui peut s'avérer extrêmement pratique pour utiliser python dans toute son étendue.
Une utilisation débile 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 eu l'idée d'une doublure récemment pour obtenir True
si une liste contient un nombre quelconque d'occurrences d'un élément, ou False
s'il ne contient aucune occurrence ou rien du tout. Utilisation de next(...)
lui donne une valeur de retour par défaut ( False
) et signifie qu'il devrait s'exécuter beaucoup plus rapidement que l'exécution de la compréhension de la liste entière.
list_does_contain = next((True for item in list_to_test if item == test_item), False)
La méthode de la liste index
retournera -1
si l'élément n'est pas présent, et renvoie l'index de l'élément dans la liste s'il est présent. Alternativement, dans un if
vous pouvez faire ce qui suit :
if myItem in list:
#do things
Vous pouvez également vérifier si un élément n'est pas dans une liste avec l'instruction if suivante :
if myItem not in list:
#do things
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.
0 votes
Votre question implique que vous êtes seulement intéressé par la liste contient un élément pas la liste contient une sous-liste ? /tuple/ set/ frozenset/... ?