python - python中子组的排列

标签 python permutation

我有一个数据框列列表,L。

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

我需要所有项目的组合,没有特定的顺序。所以我可以使用我认为的排列?

但是每个组合中我只能有一个 A 和一个 B;

所以我需要组合

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

我也不需要所有项目都出现在输出的排列中。 下面是一些组合示例:

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

谁能帮忙解决这个问题吗?

最佳答案

我认为你需要一个 Cartesian product 。您可以通过 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

关于python - python中子组的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53685281/

相关文章:

python - 我如何知道要从非阻塞标准输入中读取多少?

r - 识别变量的所有可能组合,包括 R 中是否缺少值

Python排列递归

python - 在 python 中将蓝牙设备与密码/密码配对 - RFCOMM (Linux)

python - 这是有效的堆排序吗?

python - 捕捉打印输出

python - 在指定时间内查找所有排列匹配

python - 如何显示符号后面的错误栏

Java 自定义数组的排列

c++ - 如何置换 boost::adjacency_list 中的节点?