1

リストのリストがあります。そのように考えてみましょう:

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)かです?

4

2 に答える 2

5

itertools.productが必要だと思います

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

----フラットはネストよりも優れています。

于 2012-04-19T18:54:41.430 に答える
0

itertools.productを使用して、再帰的にリスト項目を展開するたびにそれを実行できるはずです。*args

于 2012-04-19T18:54:34.213 に答える