Some thougts on cartesian products

Christoph Zwerschke cito at
Sun Jan 22 15:11:37 EST 2006

Steven D'Aprano wrote:
> If you are happy to always return a list of tuples regardless of what the
> two operands are, generators make it so easy it is shameful. Even if you
> want a special case of two string arguments returning a string, it is
> hardly any more difficult:
> def cartprod(A, B):
>     if type(A) == type(B) == str:
>         convert = lambda obj: "".join(list(obj))
>     else:
>         convert = lambda obj: obj  # do nothing
>     for a in A:
>         for b in B:
>             yield convert((a, b))

I didn't deny that it's handy; my "imul" example was pretty much the 
same. If you don't want to use the a*b syntax, it's a good solution.

-- Christoph

More information about the Python-list mailing list