python中子组的排列

我有一个数据框列的列表,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

有人能帮忙吗?


慕妹3146593
浏览 144回答 1
1回答

aluckdog

我认为您需要笛卡尔积。你可以用itertools.product. 由于您不需要每个元素,您可以附加None到每个列表并在之后删除它们。下面是一个例子:from itertools import productfor 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 DAA BB CAA BB DAA BBAA BC C DAA BC CAA BC DAA BCAA C DAA CAA DAAAS BB C DAS BB CAS BB DAS BBAS BC C DAS BC CAS BC DAS BCAS C DAS CAS DASAD BB C DAD BB CAD BB DAD BBAD BC C DAD BC CAD BC DAD BCAD C DAD CAD DADBB C DBB CBB DBBBC C DBC CBC DBCC DCD
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python