Commit c5705a82 authored by Raymond Hettinger's avatar Raymond Hettinger

Document itertools.product().

parent fb0742fe
......@@ -302,6 +302,29 @@ loops that truncate the stream.
.. versionadded:: 2.6
.. function:: product(*iterables)
Cartesian product of input iterables.
Equivalent to nested for-loops in a generator expression. For example,
``product(A, B)`` returns the same as ``((x,y) for x in A for y in B)``.
The leftmost iterators are in the outermost for-loop, so the output tuples
cycle in a manner similar to an odometer (with the rightmost element
changing on every iteration).
Equivalent to (but without building the entire result in memory)::
def product(*args):
pools = map(tuple, args)
if pools:
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)
.. versionadded:: 2.6
.. function:: repeat(object[, times])
......
......@@ -635,6 +635,9 @@ Library
- itertools.count() is no longer bounded to LONG_MAX. Formerly, it raised
an OverflowError. Now, automatically shifts from ints to longs.
- Added itertools.product() which forms the Cartesian product of
the input iterables.
- Patch #1541463: optimize performance of cgi.FieldStorage operations.
- Decimal is fully updated to the latest Decimal Specification (v1.66).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment