2017-10-16 5 views
-1

데이터베이스에서 업로드 할 섹션으로 분리되지만 별도의 항목이어야하는 데이터에서 가져온 중첩 목록이 있습니다.마스터 중첩 목록에서 여러 목록 만들기

내 중첩 된 목록 :

Master_List = [ a, [1,2,3], [1,2], d] 

하지만 이와 같은 여섯 개 별도의 목록으로 그것을 확인해야합니다

list1 = [a, 1, 1, d] 
list2 = [a, 1, 2, d] 
list3 = [a, 2, 1, d] 
list4 = [a, 2, 2, d] 
etc. 

나는이 목록의 값을 통해 목록을 통해 반복 시도했습니다 ,하지만 나는 모든 마스터 목록 인덱스가 하나 이상의 값을 가지지 않기 때문에 혼란 스럽다. 이러한 개별 목록을 어떻게 구축하여 사용할 수 있습니까?

목록을 반복하고 별도의 목록을 만들었을 때 뒤얽힌 엉망이되었습니다.

편집 : Coldspeed의 솔루션은 내가 필요한 것입니다. 이제는 사전을 사용하여 원하는 목록에 액세스하십시오.

+0

그럼, 뭘 더 당신은 지금까지 시도? –

+0

목록의 값을 통해 목록을 반복적으로 시도했지만 모든 마스터 목록 인덱스에 둘 이상의 값이있는 것은 아니므로 혼란 스럽습니다. –

답변

0

이 작업을 수행하는 가장 쉬운 방법은 itertools.product을 사용하는 것입니다.

from itertools import product 
out = {'list{}'.format(i) : list(l) for i, l in enumerate(product(*Master_List), 1)} 

print(out) 
{'list1': ['a', 1, 1, 'd'], 
'list2': ['a', 1, 2, 'd'], 
'list3': ['a', 2, 1, 'd'], 
'list4': ['a', 2, 2, 'd'], 
'list5': ['a', 3, 1, 'd'], 
'list6': ['a', 3, 2, 'd']} 

불행히도 사전을 사용하지 않고 변수 개수를 만들 수 없습니다. 당신이 listX에 액세스하려면, 당신은이처럼 out 사전에 액세스 할 수 있습니다 :

out['listX'] 
+0

itertools에 대해 들어 본 적이 없으며, 설명서를 살펴본 결과, 솔루션이 정확히 필요한 방식으로 작동합니다. 목록 1의 첫 번째 색인에 액세스하는 예제는 이제 out [ 'list1'] [0]으로 작성되었습니다. 감사합니다. –

0

한 - 라이너는 다음과 같습니다

lists = sum([[[Master_List[0], i, j, Master_List[3]] for i in Master_List[1]] for j in Master_List[2]], []) 
+0

여러 개의 개별 목록을 만들려고했지만 지금은 이제 새로운 목록 '목록'을 반복 할 수 있습니다. 고맙습니다. –