как определить динамическую функцию Python для вложенных циклов

a = [1]
b = [2,3]
c = [4,5,6]

d = [a,b,c]


for x0 in d[0]:
    for x1 in d[1]:
        for x2 in d[2]:
            print(x0,x1,x2)

Результат:

1 2 4
1 2 5
1 2 6
1 3 4
1 3 5
1 3 6

Отлично, теперь мой вопрос в том, как определить это для функции, учитывая, конечно, может быть больше списков со значениями. Идея состоит в том, чтобы получить функцию, которая динамически дала бы тот же результат.

Есть ли способ объяснить python: «сделать 8 вложенных циклов, например»?

Ответы на вопрос(1)

Решение Вопроса

Ты можешь использоватьitertools рассчитать продукты для вас и можете использовать* оператор для преобразования вашего списка в аргументы дляitertools.product() функция.

import itertools

a = [1]
b = [2,3]
c = [4,5,6]

args = [a,b,c]

for combination in itertools.product(*args):
    print combination

Выход

(1, 2, 4)
(1, 2, 5)
(1, 2, 6)
(1, 3, 4)
(1, 3, 5)
(1, 3, 6)
 filtertips09 июл. 2016 г., 00:15
Отличное решение Я ценю его.

Ваш ответ на вопрос