Check if a predicate evaluates true for all elements in an iterable in Python

Question:

I am pretty sure there is a common idiom, but I couldn’t find it with Google Search…

Here is what I want to do (in Java):

// Applies the predicate to all elements of the iterable, and returns
// true if all evaluated to true, otherwise false
boolean allTrue = Iterables.all(someIterable, somePredicate);

How is this done “Pythonic” in Python?

Also would be great if I can get answer for this as well:

// Returns true if any of the elements return true for the predicate
boolean anyTrue = Iterables.any(someIterable, somePredicate);
Asked By: Enno Shioji

||

Answers:

Do you mean something like:

allTrue = all(somePredicate(elem) for elem in someIterable)
anyTrue = any(somePredicate(elem) for elem in someIterable)
Answered By: eumiro
allTrue = all(map(predicate, iterable))
anyTrue = any(map(predicate, iterable))
Answered By: Don O'Donnell

You can use ‘all’ and ‘any’ builtin functions in Python:

all(map(somePredicate, somIterable))

Here somePredicate is a function and all will check if bool() of that element is True.

Answered By: Rafi

Here is an example that checks if a list contains all zeros:

x = [0, 0, 0]
all(map(lambda v: v==0, x))
# Evaluates to True

x = [0, 1, 0]
all(map(lambda v: v==0, x))
# Evaluates to False

Alternative you can also do:

all(v == 0 for v in x)
Answered By: Rafael
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.