2011-04-05 76 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')