2017-10-16 21 views
-1

データベースからアップロードされるセクションに分割され、別々のエントリでなければならないデータから得たネストされたリストがあります。マスターネストされたリストから複数のリストを作成する

マイネストされたリスト:

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

しかし、私はこのような6つの別々のリストにそれを行う必要があります。私は、リストの値によってリストを反復処理しようとした

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

しかし、すべてのマスターリストインデックスが複数の値を持つわけではないので、私は混乱しています。これらの別々のリストを作成するにはどうしたらいいですか?

リストを繰り返し繰り返してみると、別々のリストを作成したときに複雑な混乱が生じました。

編集:Coldspeedのソリューションはまさに私が必要としていたものです。今すぐ辞書を使って私が望むリストにアクセスします。

+0

まあ、what'veあなたはこれまでに試しましたか? –

+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

私は複数の別々のリストを作成しようとしていましたが、今度は新しいリストのリストを反復することができます。ありがとうございました。 –

関連する問題