Antwort

23

Verwenden Sie ein generator expression als dass ein Argument:

any(x > 10 for x in l) 

hier das Prädikat im Ausdruck Seite des Generators Ausdruck, aber man kann jeden Ausdruck dort verwenden, einschließlich der Funktionen.

Demo:

>>> l = range(10) 
>>> any(x > 10 for x in l) 
False 
>>> l = range(20) 
>>> any(x > 10 for x in l) 
True 

Der Generator Ausdruck wird über bisany() ein True Ergebnis findet iteriert werden, und nicht weiter:

>>> from itertools import count 
>>> endless_counter = count() 
>>> any(x > 10 for x in endless_counter) 
True 
>>> # endless_counter last yielded 11, the first value over 10: 
... 
>>> next(endless_counter) 
12 
6

Verwenden eines Generators Ausdruck innerhalb von any():

pred = lambda x: x > 10 
if any(pred(i) for i in l): 
    print "foo" 
else: 
    print "bar" 

Dies setzt voraus, dass Sie bereits eine Prädikatfunktion haben, die Sie verwenden möchten. Wenn es so einfach ist, können Sie einfach den booleschen Ausdruck direkt verwenden: any(i > 10 for i in l).

Verwandte Themen