web-dev-qa-db-fra.com

Existe-t-il une fonction courte pour les listes?

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
455
Joan Venge

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.

775
defuz

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
>>>         
61
Ant

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)

5
Dustin Raimondi

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
3
Mr. Squig