此问题的智能语法

时间:2012-04-19 18:50:58

标签: python

我有列表清单。让我们这样想:

somelist = [ 
               [1, 2, 3],
               [4, 8, 2],
               [7, 8, 4, 8, 2],
           ]

这里我的列表包含3个列表。列表中有len(list) == 3我想做这样的事情:

list1 = somelist[0]
list2 = somelist[1]
list3 = somelist[2]

for l1 in list1:
    for l2 in list2:
        for l3 in list3:
            function(something=[l1, l2, l3])

但我的列表可以有2 <= len(somelist) <= 10。因此,如果我的列表中包含len(somelist) == 4,我必须这样做:

list1 = somelist[0]
list2 = somelist[1]
list3 = somelist[2]
list4 = somelist[3]

for l1 in list1:
    for l2 in list2:
        for l3 in list3:
            for l4 in list4:
                function(something=[l1, l2, l3, l4])

所以我的问题是如何编写适用于不同len(somelist)的好代码?

2 个答案:

答案 0 :(得分:5)

我需要itertools.product

import itertools
for s in itertools.product(*somelist):
    function(something=s)

---- Flat比嵌套好。

答案 1 :(得分:0)

应该可以递归,每次展开列表项*args方式itertools.product