New submission from Abbas Taher <[email protected]>:
In the documentation the following example is given:
def product(*args, repeat=1):
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
pools = [tuple(pool) for pool in args] * repeat
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)
The proposed enhancement uses a nested generator so no intermediate results are
created.
def product2(*args, repeat=1):
def concat(result, pool):
yield from (x+[y] for x in result for y in pool)
pools = [tuple(pool) for pool in args] * repeat
result = [[]]
for pool in pools:
result = concat(result, pool)
for prod in result:
yield (tuple(prod))
----------
assignee: docs@python
components: Documentation
files: product example.py
messages: 372392
nosy: ataher, docs@python
priority: normal
severity: normal
status: open
title: Possible performance improvement for itertools.product example on Python
Docs
type: enhancement
Added file: https://bugs.python.org/file49262/product example.py
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue41120>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com