Перестановки по подгруппам в питоне - PullRequest
0 голосов
/ 08 декабря 2018

У меня есть список столбцов данных, L.

L=[AA ,  AS  ,  AD  , BB  , BC  , C ,  D ]

, и мне нужны все комбинации элементов в произвольном порядке.Так что я могу использовать перестановки, я думаю?

Однако у меня может быть только один A и один B в каждой комбинации;

Так что мне нужна комбинация

A=[AA,AS,AD]
B=[BB,BC]
All others=[C,D]

Iтакже не нужно, чтобы все присутствовали в выводимых перестановках.Несколько примеров комбинаций ниже:

AA,BB,C,D
AA,BB,C
AA
AA,BB

Может кто-нибудь помочь с этим?

1 Ответ

0 голосов
/ 08 декабря 2018

Я думаю, вам нужен декартово произведение .Вы можете получить его с помощью itertools.product.Поскольку вам не нужен каждый элемент, вы можете добавить None к каждому списку и впоследствии удалить их.

Вот пример:

from itertools import product
for choices in product(['AA','AS','AD',None],['BB', 'BC', None], ['C', None], ['D', None]):
    print(' '.join(column for column in choices if column))

Он выводит:

AA BB C D
AA BB C
AA BB D
AA BB
AA BC C D
AA BC C
AA BC D
AA BC
AA C D
AA C
AA D
AA
AS BB C D
AS BB C
AS BB D
AS BB
AS BC C D
AS BC C
AS BC D
AS BC
AS C D
AS C
AS D
AS
AD BB C D
AD BB C
AD BB D
AD BB
AD BC C D
AD BC C
AD BC D
AD BC
AD C D
AD C
AD D
AD
BB C D
BB C
BB D
BB
BC C D
BC C
BC D
BC
C D
C
D
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...