我有列表清单。让我们这样想:
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)
的好代码?
答案 0 :(得分:5)
import itertools
for s in itertools.product(*somelist):
function(something=s)
---- Flat比嵌套好。
答案 1 :(得分:0)
应该可以递归,每次展开列表项*args
方式itertools.product。