Python generates all n substitutions from n lists
I have n lists of different lengths for which I want to create all possible permutations.
those. if a=[1,2]
u b=[3,4,5]
then i would like to get res=[[1,3],[1,4],[1,5],[2,3],[2,4],[2,5]]
i tried to achieve this using a recursive function which turned out to be not very efficient and not very pythonic. How does an experienced python programmer handle the problem?
source to share
He called the Cartesian product of two sequences.
It is already available in Python as a library function: . itertools.product
Example:
>>> import itertools
>>> a = [1, 2]
>>> b = [3, 4, 5]
>>> list(itertools.product(a, b))
[(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)]
source to share
itertools is definitely the way to go, but if you don't want to take the easy routes .....
def print_permutations(lists, perms=[]):
if not lists:
print perms
else:
current_layer = lists[0]
remaining_layers = lists[1:]
for word in current_layer:
print_permutations(remaining_layers, perms + [word])
l = (('quick', 'lazy'), ('brown', 'black', 'grey'), ('fox', 'dog'))
print_permutations(l)
source to share