2013-11-02 4 views
0

Как использовать функцию itertools.product, если я не знаю количество списков? У меня есть список, и у него есть списки внутри него.генерация кортежей с использованием n-списков с itertools.product

Мол,

lis = [[1,2,3],[6,7,8],[2,4,5]] 

Обычно мне нужно сделать,

product([1,2,3],[6,7,8],[2,4,5]) 

Как это сделать, если входной список, как в примере?

ответ

1

Попробуйте следующее:
product(*lis)
Это называется argument unpacking.
Краткое примечание: вы можете использовать аргумент распаковки с именованными параметрами также с двойной звезды:

def simpleSum(a=1,b=2): 
    return a + b 
simpleSum(**{'a':1,'b':2}) # returns 3 
+0

Я этого не знал. Я обязательно проверю это. Спасибо, в любом случае. – genclik27

+0

@ genclik27 добро пожаловать. вы также можете использовать его с именованными параметрами, ознакомьтесь с моим обновленным ответом. – aga

1

Использование argument unpacking:

>>> lis = [[1,2,3],[6,7,8],[2,4,5]] 
>>> list(itertools.product(*lis)) 
[(1, 6, 2), (1, 6, 4), (1, 6, 5), (1, 7, 2), (1, 7, 4), (1, 7, 5), (1, 8, 2), 
(1, 8, 4), (1, 8, 5), (2, 6, 2), (2, 6, 4), (2, 6, 5), (2, 7, 2), (2, 7, 4), 
(2, 7, 5), (2, 8, 2), (2, 8, 4), (2, 8, 5), (3, 6, 2), (3, 6, 4), (3, 6, 5), 
(3, 7, 2), (3, 7, 4), (3, 7, 5), (3, 8, 2), (3, 8, 4), (3, 8, 5)] 
>>> 
+0

Очень просто. Спасибо, это то, что я искал. – genclik27

 Смежные вопросы

  • Нет связанных вопросов^_^