52 votes

La plus simple façon de vérifier chaîne qui contient une chaîne de caractères dans la liste?

Je me retrouve à plusieurs reprises d'écrire le même morceau de code:

def stringInList(str, list):
    retVal = False
    for item in list:
        if str in item:
            retVal = True
    return retVal

Est-il possible que je peux écrire cette fonction/plus rapides avec moins de code? J'ai l'habitude de l'utiliser dans une instruction if, comme ceci:

if stringInList(str, list):
    print 'string was found!'

77voto

Haidro Points 24336

Oui, utilisez any():

if any(s in item for item in L):
    print 'string was found!'

Comme les docs de mentionner, c'est à peu près équivalent à celui de votre fonction, mais any() peut prendre générateur d'expressions au lieu de simplement une chaîne de caractères et une liste, et any() court-circuits. Une fois s in item est True, la fonction pause (vous pouvez tout simplement le faire avec votre fonction si vous venez de changer de retVal = True de return True. Rappelez-vous que les fonctions de pause lorsqu'elle retourne une valeur).


Vous devriez éviter de nommer des chaînes str et les listes d' list. Qui va l'emporter sur les types intégrés.

Prograide.com

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.

Powered by:

X