2012-04-13 5 views
4

Я пытаюсь написать модуль, чтобы объединить переменное количество списков, используя itertools.product.Python itertools.product с переменным числом аргументов

Ближайший я могу получить это:

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

Это не работает, потому что списки есть единый список, так что он просто возвращает исходную последовательность. Но я не могу понять, как передать каждый элемент переменной списка в itertools.

Спасибо за любые предложения.

ответ

14

Вы должны использовать * для разделения единого списка на составные части списков:

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

Смотрите раздел Python Учебник по Unpacking Argument Lists.

+0

Спасибо! где я могу найти документацию на * var? – ralph346526

+1

@ ralph346526 Я добавил, что в моем редактировании. – agf