Vérifier si l'élément est dans un tableau / liste

203

Si j'ai un tableau de chaînes, puis-je vérifier si une chaîne se trouve dans le tableau sans faire de forboucle? Plus précisément, je cherche un moyen de le faire dans une ifdéclaration, donc quelque chose comme ceci:

if [check that item is in array]:
SomeKittens
la source
3
Je pense que la question est déjà répondue ici
Tarun Ande

Réponses:

396

En supposant que vous voulez dire «liste» où vous dites «tableau», vous pouvez faire

if item in my_list:
    # whatever

Cela fonctionne pour n'importe quelle collection, pas seulement pour les listes. Pour les dictionnaires, il vérifie si la clé donnée est présente dans le dictionnaire.

Sven Marnach
la source
1
@jdi, et cette boucle s'exécutera beaucoup plus rapidement que celle codée explicitement en Python, sans oublier qu'elle est plus facile à lire.
Mark Ransom
17

Je vais également supposer que vous voulez dire «liste» lorsque vous dites «tableau». La solution de Sven Marnach est bonne. Si vous allez faire des vérifications répétées sur la liste, il peut être utile de la convertir en un ensemble ou un ensemble de frozensets, ce qui peut être plus rapide pour chaque vérification. En supposant que votre liste de chaînes s'appelle subjects:

subject_set = frozenset(subjects)
if query in subject_set:
    # whatever
Michael Hoffman
la source
3

Utilisez une fonction lambda.

Disons que vous avez un tableau:

nums = [0,1,5]

Vérifiez si 5 est en nums:

(len(filter (lambda x : x == 5, nums)) > 0)

Cette solution est plus robuste. Vous pouvez maintenant vérifier si un nombre satisfaisant à une certaine condition se trouve dans votre tableau nums.

Par exemple, vérifiez si un nombre supérieur ou égal à 5 ​​existe dans nums:

(len(filter (lambda x : x >= 5, nums)) > 0)
Marquistador
la source
Cela fonctionne avec Python2. Avec Python 3.7, vous obtiendrez cette erreur:TypeError: object of type 'filter' has no len()
Jun711
1

Vous devez utiliser .values ​​pour les tableaux. par exemple, disons que vous avez une trame de données qui a un nom de colonne, c'est-à-dire test ['Name'], vous pouvez faire

if name in test['Name'].values :
   print(name)

pour une liste normale, vous n'avez pas besoin d'utiliser .values

sam komo
la source
Je pense que vous avez besoin d'un objet Pandas DataFrame pour utiliser .values.
troymyname00
-3

Vous pouvez également utiliser la même syntaxe pour un tableau. Par exemple, la recherche dans une série Pandas:

ser = pd.Series(['some', 'strings', 'to', 'query'])

if item in ser.values:
    # do stuff
BCR
la source