summaryrefslogtreecommitdiffstats
path: root/Doc/library
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2009-01-26 02:56:58 (GMT)
committerRaymond Hettinger <python@rcn.com>2009-01-26 02:56:58 (GMT)
commit6b3b0fc4d48549b8ee2b5df3409229de80430040 (patch)
treea0fb0a7d9a00e584e1403ea515e809e56615c539 /Doc/library
parentace673391acbe0411b20b972b6068dab7a0bbdb4 (diff)
downloadcpython-6b3b0fc4d48549b8ee2b5df3409229de80430040.zip
cpython-6b3b0fc4d48549b8ee2b5df3409229de80430040.tar.gz
cpython-6b3b0fc4d48549b8ee2b5df3409229de80430040.tar.bz2
Forward port r68941 adding itertools.compress().
Diffstat (limited to 'Doc/library')
-rw-r--r--Doc/library/collections.rst2
-rw-r--r--Doc/library/itertools.rst18
2 files changed, 15 insertions, 5 deletions
diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst
index 803abab..a8911d6 100644
--- a/Doc/library/collections.rst
+++ b/Doc/library/collections.rst
@@ -286,7 +286,7 @@ counts less than one::
Section 4.6.3, Exercise 19*\.
* To enumerate all distinct multisets of a given size over a given set of
- elements, see the :func:`combinations_with_replacement` function in the
+ elements, see :func:`combinations_with_replacement` in the
:ref:`itertools-recipes` for itertools::
map(Counter, combinations_with_replacement('ABC', 2)) --> AA AB AC BB BC CC
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 36254cd..d281278 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -133,6 +133,20 @@ loops that truncate the stream.
The number of items returned is ``n! / r! / (n-r)!`` when ``0 <= r <= n``
or zero when ``r > n``.
+.. function:: compress(data, selectors)
+
+ Make an iterator that filters elements from *data* returning only those that
+ have a corresponding element in *selectors* that evaluates to ``True``.
+ Stops when either the *data* or *selectors* iterables have been exhausted.
+ Equivalent to::
+
+ def compress(data, selectors):
+ # compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F
+ return (d for d, s in zip(data, selectors) if s)
+
+ .. versionadded:: 2.7
+
+
.. function:: count([n])
Make an iterator that returns consecutive integers starting with *n*. If not
@@ -594,10 +608,6 @@ which incur interpreter overhead.
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
- def compress(data, selectors):
- "compress('ABCDEF', [1,0,1,0,1,1]) --> A C E F"
- return (d for d, s in zip(data, selectors) if s)
-
def combinations_with_replacement(iterable, r):
"combinations_with_replacement('ABC', 2) --> AA AB AC BB BC CC"
# number items returned: (n+r-1)! / r! / (n-1)!