2012-04-19 2 views
1

목록 목록이 있습니다. 생각해 봅시다.이 호에 대한 똑똑한 구문

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

여기 내 목록에는 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(list) == 3을 목록으로 나는 이런 식으로 뭔가를 할 수 있습니다. 내 목록 len(somelist) == 4이 있다면 그래서 내가해야 할 :

그래서 제 질문은 다른 len(somelist) 함께 작동합니다 좋은 코드를 작성하는 방법입니다
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]) 

?

답변

5

나는 것은 당신이 itertools.product

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

가 ---- 플랫 중첩보다 더 필요합니다.

0

그것은 할 수 있어야한다는 재귀 때마다 itertools.product으로 목록 항목 *args 방법을 확장합니다.

관련 문제