Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python itertools.product with variable number of arguments

I am trying to write a module to combine a variable number of lists using itertools.product.

The closest I can get is:

import itertools
lists = [["item1","item2"],["A","b","C"], ["etc..."]]
searchterms = list(itertools.product(lists))
print searchterms

This doesn't work, because lists is a single list, so it just returns the original sequence. But I can't figure out how to pass each element of the lists variable to itertools.

Thanks for any suggestions.

like image 298
ralph346526 Avatar asked Apr 13 '12 21:04

ralph346526


1 Answers

You need to use * to separate the single list into its constituent lists:

searchterms = list(itertools.product(*lists))

See the Python Tutorial section on Unpacking Argument Lists.

like image 124
agf Avatar answered Nov 16 '22 02:11

agf