python, un “b” mot-clé, comment sur plusieurs?
Mes aventures en Python de poursuivre et de mes livres préférés sont le silence de nouveau. Python propose un moyen de tester si une variable est à l'intérieur d'un objet iterable objet, à l'aide du mot-clé:
if "a" in "abrakadabra" :
print "it is definitely here"
Mais est-il possible de tester si plus d'un élément dans la liste (un)?
Actuellement, je suis en utilisant la syntaxe ci-dessous, mais elle est un peu longue:
if "//@in " in sTxt or "//@out " in sTxt or "//@ret " in sTxt or <10 more>
print "found."
Bien sûr regexes peut aider, mais à l'aide de regexes va prendre beaucoup de détaillé de code et de s'
ne pas être aussi clair que le "b". Existe-il d'autres Pythonic moyens?
OriginalL'auteur grigoryvp | 2009-04-18
Vous devez vous connecter pour publier un commentaire.
()
et()
prend un objet iterable et vérifie si tout ou partie de leur évaluation à la valeur true. Combinez cela avec un générateur d'expressions, et vous pouvez sélectionner plusieurs éléments.Pas du tout. Merci.
OriginalL'auteur Markus Jarderot
any(snippet in text_body for snippet in ("hi", "foo", "bar", "spam"))
OriginalL'auteur Benjamin Peterson
Si vous faites des tests beaucoup de lignes pour les mêmes mots, il peut être plus rapide pour les compiler comme une expression régulière. par exemple:
Rapide calendrier montre que c'est généralement plus rapide que le
any(word in theString for word in words)
approche. J'ai testé les deux approches, avec des variations de texte (court/long avec/sans allumettes). Voici les résultats:Si la performance n'a pas d'importance si, le
any()
approche est plus lisible.OriginalL'auteur Brian
Vous pouvez également utiliser définir les méthodes et les opérateurs:
Je pense que c'est plus facile à lire qu'à l'aide de l'un quelconque ou de tous, mais ont pour convertir vos collections dans des ensembles. Depuis intersection et de confinement sont ce à quoi vous vous souciez, vous pourriez envisager de les rendre définit en premier lieu.
Ma réponse mentionne que ces objets doivent être ensembles.
OriginalL'auteur allyourcode
Si vous voulez tout vérifier alors vous pouvez utiliser ce:
Si vous voulez tous découvrez que vous pourriez utiliser ceci:
EDIT: Ne connaissais pas le plus pythonic
any()
. Il est probablement préférable de l'utiliser sur python.EDIT2: Ajout de break, et corrigé les touscas.
OriginalL'auteur Esteban Küber
Il n'y a pas construit dans le chemin de la syntaxe pour le faire. Cependant, vous pouvez utiliser le "tout" de la fonction pour le rendre plus facile que @MizardX et @Benjamin Peterson a montré.
OriginalL'auteur Rory
Ce doit être une vieille poste, aujourd'hui la façon la plus simple de le faire est avec une liste:
OriginalL'auteur mazunki