2009-08-27 9 views
67

J'ai une liste en Python, et je veux vérifier si des éléments sont négatifs. Specman a la méthode has() pour les listes qui ne:Méthode pythonique pour vérifier si une condition est valide pour un élément d'une liste

x: list of uint; 
if (x.has(it < 0)) { 
    // do something 
}; 

it est un mot-clé à chaque Specman mappé élément de la liste à son tour.

Je trouve cela plutôt élégant. J'ai regardé à travers le Python documentation et n'a rien trouvé de similaire. Le meilleur que j'ai pu trouver était:

if (True in [t < 0 for t in x]): 
    # do something 

Je trouve cela plutôt inélégant. Y a-t-il une meilleure façon de le faire en Python?

Répondre

118

any():

if any(t < 0 for t in x): 
    # do something 

Aussi, si vous allez utiliser "True dans ...", en faire une expression de générateur de sorte qu'il ne prend pas O (n) mémoire:

if True in (t < 0 for t in x): 
22

Utilisez any().

if any(t < 0 for t in x): 
    # do something 
9

Python a un construit en fonction any() exactement cet effet.

+0

2.5+ seulement. Sinon, vous devez faire une fonction, peut-être en utilisant ifilter et exceptions, ou bool (set ((x pour x si cond))) ou similaire. –

+1

Plutôt qu'un truc compliqué d'ifilter, faites simplement: def any (it): pour el dedans: si el: return True; return False – Rory

Questions connexes