2011-04-05 79 views
3

這裏是我的清單:如何在python中打印所有可能的嵌套列表?

pos = [['det'], ['noun', 'adj'], ['noun'], ['vb'], ['det'], ['vb', 'noun', 'adj']] 

或者

pos = ['det', ['noun', 'adj'], 'noun', 'vb', 'det', ['vb', 'noun', 'adj']] 

我想打印所有的組合:

det noun noun vb det vb 
det adj noun vb det vb 
det noun noun vb det noun 
det adj noun vb det noun 
det noun noun vb det adj 
det adj noun vb det adj 

我應該使用遞歸函數?我試過沒有結果。

Itertools(排列,產品,組合)不能幫助我。

你能幫我嗎?

回答

10

我覺得itertools.product()其實你在找什麼:

pos = [['det'], ['noun', 'adj'], ['noun'], 
     ['vb'], ['det'], ['vb', 'noun', 'adj']] 
for x in itertools.product(*pos): 
    print " ".join(x) 

打印

det noun noun vb det vb 
det noun noun vb det noun 
det noun noun vb det adj 
det adj noun vb det vb 
det adj noun vb det noun 
det adj noun vb det adj 
+0

你是對的,但它確實工作!我不知道爲什麼當我嘗試時我沒有得到這個結果。無論如何,非常感謝! – 2011-04-05 14:45:04

+0

我有這個問題,當有字符串數字,這是2位數字它不起作用。它也分裂了數字,我不想要的。任何想法如何解決這種行爲? – eljobso 2016-06-20 12:16:11

+0

@eljobso從你的評論中,我不明白你到底在做什麼以及問題是什麼。我建議提出一個描述你的問題的新問題。將您的代碼添加到問題中,解釋預期的輸出並顯示實際輸出。 – 2016-06-20 17:15:53

1

'itertools' 沒有幫助:

for i in itertools.product(*pos): print i 
('det', 'noun', 'noun', 'vb', 'det', 'vb') 
('det', 'noun', 'noun', 'vb', 'det', 'noun') 
('det', 'noun', 'noun', 'vb', 'det', 'adj') 
('det', 'adj', 'noun', 'vb', 'det', 'vb') 
('det', 'adj', 'noun', 'vb', 'det', 'noun') 
('det', 'adj', 'noun', 'vb', 'det', 'adj')