From 18750ab2a052f3d7b26b5140744d73186f9fd34f Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Thu, 28 Feb 2008 09:23:48 +0000 Subject: [PATCH] Add repeat keyword argument to itertools.product(). --- Doc/library/itertools.rst | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Doc/library/itertools.rst b/Doc/library/itertools.rst index 615532270d..d9a2b331e0 100644 --- a/Doc/library/itertools.rst +++ b/Doc/library/itertools.rst @@ -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: -- 2.50.1