这是我的清单:
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(排列,产品,组合)对我没有帮助。
你能帮帮我吗?
答案 0 :(得分: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
答案 1 :(得分: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')