Как распечатать все возможности вложенных списков в python? - PullRequest
3 голосов
/ 05 апреля 2011

Вот мой список:

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 (перестановки, продукт, комбинации) мне не помогают.

Не могли бы вы помочь мне?

Ответы [ 2 ]

10 голосов
/ 05 апреля 2011

Я думаю 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 голос
/ 05 апреля 2011

'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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...