summaryrefslogtreecommitdiffstats
path: root/Doc/library/itertools.rst
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2008-07-19 00:43:00 (GMT)
committerRaymond Hettinger <python@rcn.com>2008-07-19 00:43:00 (GMT)
commit3369167089cb2390b16ced87a0c54a3678342e83 (patch)
treefa1f8dec0ec490803e5a4f4c5020871ca25c6f51 /Doc/library/itertools.rst
parent3c212163ec5fadeabf4070c2b2e22bd85e2d2aa0 (diff)
downloadcpython-3369167089cb2390b16ced87a0c54a3678342e83.zip
cpython-3369167089cb2390b16ced87a0c54a3678342e83.tar.gz
cpython-3369167089cb2390b16ced87a0c54a3678342e83.tar.bz2
Add recipe to the itertools docs.
Diffstat (limited to 'Doc/library/itertools.rst')
-rw-r--r--Doc/library/itertools.rst15
1 files changed, 15 insertions, 0 deletions
diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst
index 81b2c7f..9a3626f 100644
--- a/Doc/library/itertools.rst
+++ b/Doc/library/itertools.rst
@@ -701,3 +701,18 @@ which incur interpreter overhead.
for d, s in izip(data, selectors):
if s:
yield d
+
+ def combinations_with_replacement(iterable, r):
+ "combinations_with_replacement('ABC', 3) --> AA AB AC BB BC CC"
+ pool = tuple(iterable)
+ n = len(pool)
+ indices = [0] * r
+ yield tuple(pool[i] for i in indices)
+ while 1:
+ for i in reversed(range(r)):
+ if indices[i] != n - 1:
+ break
+ else:
+ return
+ indices[i:] = [indices[i] + 1] * (r - i)
+ yield tuple(pool[i] for i in indices)