Add repeat keyword argument to itertools.product().

This commit is contained in:
Raymond Hettinger 2008-02-28 09:23:48 +00:00
parent 69e1309fd4
commit 18750ab2a0
1 changed files with 7 additions and 3 deletions

View File

@ -340,7 +340,7 @@ loops that truncate the stream.
.. versionadded:: 2.6
.. function:: product(*iterables)
.. function:: product(*iterables[, repeat])
Cartesian product of input iterables.
@ -353,11 +353,15 @@ loops that truncate the stream.
so that if the inputs iterables are sorted, the product tuples are emitted
in sorted order.
To compute the product of an iterable with itself, specify the number of
repetitions with the optional *repeat* keyword argument. For example,
``product(A, repeat=4)`` means the same as ``product(A, A, A, A)``.
Equivalent to the following except that the actual implementation does not
build-up intermediate results in memory::
def product(*args):
pools = map(tuple, args)
def product(*args, **kwds):
pools = map(tuple, args) * kwds.get('repeat', 1)
if pools:
result = [[]]
for pool in pools: