2013-02-26 36 views
1

所有可能的字符串我有兩個級別列表如下:形式在2名列表

[['Demonstrative-Pronoun', 'Personal-Pronoun', 'Adjective', 'Noun', 'Noun', 'Indefinite-Pronouns'], ['Verb', 'Adjective', 'Adverb', 'Noun', 'Noun'], ['Verb', 'Verb', 'Verb', 'Verb', 'Adjective', 'Noun', 'Noun', 'Verb'], ['Verb', 'Verb', 'Verb', 'Verb', 'Verb', 'Verb', 'Noun']] 

我想形成從這些列表就像所有可能的字符串:

  1. 示範代詞動詞動詞動詞
  2. 示範代詞形容動詞動詞 等

有沒有更快的方法來做到這一點或任何快速的方式嗎?此列表是硬編碼的,但它實際上可能包含任何數量的元素和子元素

謝謝!

回答

6

使用itertools.product基本上做了一堆嵌套for循環:

import itertools 

items = [...] 

for grouping in itertools.product(*items): 
    print ' '.join(grouping) 

這會給你所有1680種組合。

來自評論:「你可以用map(set,items)替換項目,它會刪除重複項,這會將count數降低到120。

+0

謝謝!正是我在找什麼。我現在可能需要一些東西來減少這個列表大小。這個數字對於這麼小的名單來說太多了。但這是另一個問題的一部分,我想;)非常感謝! – 2013-02-26 06:51:35

+1

@AkshatGoel:你可以用'map(set,items)'替換'items',它會刪除重複項。這將計數降至120. – Blender 2013-02-26 06:52:38

+0

謝謝! :)我會添加該部分來回答自己:) – 2013-02-26 06:53:19