Cartesian Product of two lists (itertools)

Mark Wooding mdw at distorted.org.uk
Sun Jan 25 20:57:39 EST 2009


Thorsten Kampe <thorsten at thorstenkampe.de> writes:

> [((1, 4), 7), ((1, 4), 8), ((1, 5), 7), ((1, 5), 8), ((2, 4), 7), ((2, 
> 4), 8), ((2, 5), 7), ((2, 5), 8)]

[...]

> What's the best way to pre-process the arguments to "itertools.product" 
> or to post-process the result of "itertools.product" to get what I 
> want?!

Python has powerful destructuring capabilities:

        [(x, y, z) for ((x, y), z) in lopsided_list]

This seems simpler and is probably faster than a generalized flatten for
this size of problem, but I wouldn't use it to rearrange tuples with
more than four or five elements.

-- [mdw]



More information about the Python-list mailing list