Использование itertools для уменьшения сложности четыре "для" STMT? - PullRequest
1 голос
/ 08 июня 2011

У меня есть список из 4 списков:

list1, list2, list3, list4 = range(0,4), range(4,9), range(8,15), range(2,16)
# just using range() generate sample data  

Я могу перечислить все комбинации предметов по последовательности list1_item, list2_item, list3_item, list4_item через следующий код:

for item1 in list1:
    for item2 in list2:
        for item3 in list3:
             for item4 in list4:
                   print [item1, item2, item3, item4]

Могу ли я узнать, могу ли я сделатьэта работа через itertools модуль?

Спасибо

Ответы [ 2 ]

5 голосов
/ 08 июня 2011

Да, вы можете:

for n in itertools.product(list1, list2, list3, list4):
    print n

(n будет списком вместо списка).

1 голос
/ 08 июня 2011

Я думаю, что вы хотите, это itertools.product

import itertools
ret = list ( itertools.product( list1, list2, list3, list4 ) )

И ret это результат.

...