Combinations of n Lists

Alex Martelli aleaxit at yahoo.com
Wed Feb 28 17:14:32 CET 2001


"Warren Postma" <embed at geocities.com> wrote in message
news:NI8n6.2979$TW.15640 at tor-nn1.netcom.ca...
> I was just wondering if anyone has a more general version of this little
> helper function:
>
> def combinations(list1,list2):
>     return [ (i,j) for i in list1 for j in list2 ]
    [snip]
> def combinations(*lists):
>         ....
> print combinations( [1,2,3], [4,5,6], [7,8,9], .... )
>     [ [1,4,7,....],  .... [1,4,8, ... ], ..... ]

As usual, the easiest approach is through recursion, e.g.:

def combinations(*lists):
    if not lists: return [ [] ]
    more = combinations(*lists[1:])
    return [ [i]+js for i in lists[0] for js in more ]


Alex






More information about the Python-list mailing list