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]:

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.


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

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)

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.