summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2014-04-02 10:17:33 (GMT)
committerRaymond Hettinger <python@rcn.com>2014-04-02 10:17:33 (GMT)
commit0ac8e47149b41eea06d5782cf0df91ae5915ee29 (patch)
tree8bb2ceebc4808b2688fbef95e68ab9219198fd09 /Doc
parent5236f89c2fe4359901a4d9ae8f6467a7edba641d (diff)
parent31b26f637aa118c70157a3e11f58f12620345989 (diff)
downloadcpython-0ac8e47149b41eea06d5782cf0df91ae5915ee29.zip
cpython-0ac8e47149b41eea06d5782cf0df91ae5915ee29.tar.gz
cpython-0ac8e47149b41eea06d5782cf0df91ae5915ee29.tar.bz2
merge
Diffstat (limited to 'Doc')
-rw-r--r--Doc/library/itertools.rst13
1 files changed, 13 insertions, 0 deletions
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 5d3e50a..f489535 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -784,6 +784,19 @@ which incur interpreter overhead.
except exception:
pass
+ def first_true(iterable, default=False, pred=None):
+ """Returns the first true value in the iterable.
+
+ If no true value is found, returns *default*
+
+ If *pred* is not None, returns the first item
+ for which pred(item) is true.
+
+ """
+ # first_true([a,b,c], x) --> a or b or c or x
+ # first_true([a,b], x, f) --> a if f(a) else b if f(b) else x
+ return next(filter(pred, iterable), default)
+
def random_product(*args, repeat=1):
"Random selection from itertools.product(*args, **kwds)"
pools = [tuple(pool) for pool in args] * repeat