2013-12-18 6 views
-3

나는 파이썬을 사용하여 스크립트를 작성하려고했습니다. 나는 동일한 작업의 반복을 피하고 하나를 쓰고 싶다.for 루프 파이썬에서 다중 목록 호출

catlist1 = ['s0.05-k5-a1.0' , 's0.05-k5-a3.0' , 's0.05-k5-a7.0' , 's0.05-k5-a10.0' ] 
catlist2 = ['s0.05-k7-a1.0' , 's0.05-k7-a3.0' , 's0.05-k7-a7.0' , 's0.05-k7-a10.0'] 

catlist3 = ['s0.07-k5-a1.0' , 's0.07-k5-a3.0' , 's0.07-k5-a7.0' , 's0.07-k5-a10.0' ] 
catlist4 = ['s0.07-k7-a1.0' , 's0.07-k7-a3.0' , 's0.07-k7-a7.0' , 's0.07-k7-a10.0'] 

catlist = [catlist1 ,catlist2 ,catlist3 ,catlist4 ] 

for 루프 내의 각 목록을 호출해야합니다. 나는이 단일 루프 안의 모든리스트를 호출한다. 나는 catlist1에서 또 다시 catlist2에서 여러 번 쓰는 것으로 repititvily 할 수 있습니다. 어떻게 해결할 수 있을까요? 감사합니다

for parName in catlist:   

    category = '/home/x/Desktop/rouge/ROUGE/Experiments/' 

    for root, subFolders, files in os.walk(category + parName): 
     #i = 0 
     (head, filename) = os.path.split(root) 
     print filename 
     #some function that is will re 

답변

2

중첩 된 목록을 평평하게하고 싶습니다. 당신은 하나 개의 목록 (catlist1)의 끝까지 루프에 대한 반복 처리의 각 반복에 대해 무엇 내가 찾고 있었던이

for parName in (item for items in catlist for item in items): 
+0

처럼 그것을 할 수 있습니다 다른 목록의 다음 목록으로 반복에 대한 (catlist2) . –

+0

@MeronGebremariam 예. 이것은 정확히 그게 ... :) – thefourtheye

5
for parName in itertools.chain.from_iterable(catlist):