2012-11-18 20 views
15

私は、単語を含むさまざまな数のユーザー定義リストを持っています。Pythonの入れ子にされていないループを反復する

list1 = ["THE", "A"] 
list2 = ["ELEPHANT", "APPLE", "CAR"] 
list3 = ["WALKED", "DROVE", "SAT"] 

私がしたいことのように、ほとんどのである単語のグループを参照するために、既知の単語の辞書に対してそれぞれをチェックし、各リスト内のすべての組み合わせを反復処理することです。たとえば、次のような3つのリストがあるかもしれません辞書これは、繰り返しが次のようになることを意味します。

[ 
    "THE ELEPHANT WALKED", 
    "THE APPLE WALKED", 
    "THE CAR WALKED", 
    "THE ELEPHANT DROVE", 
    "THE APPLE DROVE", 
    "THE CAR DROVE", 
    # ... 
    "A CAR SAT", 
] 

問題は、任意の数のリストがあり、各リストにはさまざまなアイテムが含まれている可能性があるということです。私は再帰がこのために使用できることを知っていますが、再帰を伴わない解が必要です。

答えて

24

itertools.productは正確に行い...

for a in list1: 
    for b in list2: 
     for c in list3: 
      ... 

しかし、私はどこに停止するか分からないだろう:私は持っておくの問題は、そうでない場合、私はちょうど記述し、リストの可変量が存在することができるという事実でありますあなたが欲しいもの:

from itertools import product 

lists = [ 
    ['THE', 'A'], 
    ['ELEPHANT', 'APPLE', 'CAR'], 
    ['WALKED', 'DROVE', 'SAT'] 
] 

for items in product(*lists): 
    print items 
+2

を使用して、彼はリストの数、 ''な生産を知りませんt(* lists) ''はもっと適切かもしれません。 –

+1

@Lattyware:あなたがコメントしている間にそれをしていた – Eric

+0

偉大な心は同じように考える+1。 –

1

考えるのpython 3.2

from itertools import product 

[" ".join(i) for i in product(list1,list2,list3)] 
関連する問題