for_some(), for_all()?

Alex Martelli aleaxit at
Wed Sep 22 19:37:01 CEST 2004

aurora <aurora00 at> wrote:

> I am trying to test a list to see if some or all elements pass a test. For
> example I can use reduce() to test if any element is 0.
> >>> lst = [1,2,0,3]
> >>> test = lambda x: x == 0
> >>> reduce(operator.__or__,[test(x) for x in lst])
> True
> However I bet reduce() does not exploit the short circuit logic. Also it
> is a little clumsy to create another list to pass into reduce. Is there
> some equivalent of
>    for_some(test, lst)
> or
>    for_all(test, lst)?


def for_some(test, lst):
    for item in lst:
        if test(item): return True

def for_all(test, lst):
    for item in lst:
        if not test(item): return False
    return True

You can play tricks, but you can't beat the simplicity of these, and
even with the cleverest tricks you can't beat their speed by much.  And
simplicity is a great quality for software to have.


More information about the Python-list mailing list