У меня есть вложенный список, и я хотел бы сделать продукт из двух элементов.
test = [[('juice', 'NOUN'), ('orange', 'FLAVOR')],
[('juice', 'NOUN'), ('orange', 'FLAVOR'), ('lemon', 'FLAVOR')],
[('orange', 'FLAVOR'), ('chip', 'NOUN')]]
То, что я ожидаю, выглядит примерно так:
[(('juice', 'NOUN'), ('lemon', 'FLAVOR')),
(('juice', 'NOUN'), ('chip', 'NOUN')),
(('orange', 'FLAVOR'), ('lemon', 'FLAVOR')),
(('orange', 'FLAVOR'), ('chip', 'NOUN')),
(('lemon', 'FLAVOR'), ('chip', 'NOUN'))]
То естьЯ хотел бы получить перестановку по спискам, но только для уникальных предметов.Я предпочитаю использовать itertools
.Раньше я пытался list(itertools.product(*test))
Но я понял, что получится произведение длины вложенного списка ...
Мой текущий код:
unique_list = list(set(itertools.chain(*test)))
list(itertools.combinations(unique_list, 2))
Мой мыслительный процесс состоит в том, чтобы получитьсначала уникальные элементы во вложенном списке, поэтому вложенный список будет [[('juice', 'NOUN'), ('orange', 'FLAVOR')], [('lemon', 'FLAVOR')], [('chip', 'NOUN')]]
, а затем используйте itertools.combinations
для перестановки.Тем не менее, он будет переставлять в списке (т.е. сок и апельсин появляются вместе), что я не хочу в моих результатах.