diff options
author | Raymond Hettinger <python@rcn.com> | 2016-03-07 02:11:38 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2016-03-07 02:11:38 (GMT) |
commit | e525ee3b483889313b62b09b4c9103d18dd9cbb7 (patch) | |
tree | 8530e435acbe1737a06eb7fe0439181215e593bb | |
parent | d66dd5ce68cbf4a33c385439d5eeb2bff4e860f1 (diff) | |
download | cpython-e525ee3b483889313b62b09b4c9103d18dd9cbb7.zip cpython-e525ee3b483889313b62b09b4c9103d18dd9cbb7.tar.gz cpython-e525ee3b483889313b62b09b4c9103d18dd9cbb7.tar.bz2 |
Document another recipe for itertools: all_equal(). Inspired by David Beazley.
-rw-r--r-- | Doc/library/itertools.rst | 5 | ||||
-rw-r--r-- | Lib/test/test_itertools.py | 8 |
2 files changed, 13 insertions, 0 deletions
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 9dac5e1..a9d1073 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -693,6 +693,11 @@ which incur interpreter overhead. "Returns the nth item or a default value" return next(islice(iterable, n, None), default) + def all_equal(iterable): + "Returns True if all the elements are equal to each other" + g = groupby(iterable) + return next(g, True) and not next(g, False) + def quantify(iterable, pred=bool): "Count how many times the predicate is true" return sum(map(pred, iterable)) diff --git a/Lib/test/test_itertools.py b/Lib/test/test_itertools.py index 08c9f39..f940852 100644 --- a/Lib/test/test_itertools.py +++ b/Lib/test/test_itertools.py @@ -2014,6 +2014,11 @@ Samuele ... "Returns the nth item or a default value" ... return next(islice(iterable, n, None), default) +>>> def all_equal(iterable): +... "Returns True if all the elements are equal to each other" +... g = groupby(iterable) +... return next(g, True) and not next(g, False) + >>> def quantify(iterable, pred=bool): ... "Count how many times the predicate is true" ... return sum(map(pred, iterable)) @@ -2127,6 +2132,9 @@ perform as purported. >>> nth('abcde', 9) is None True +>>> [all_equal(s) for s in ('', 'A', 'AAAA', 'AAAB', 'AAABA')] +[True, True, True, False, False] + >>> quantify(range(99), lambda x: x%2==0) 50 |