python - Python 组合和产品
问题描述
我有一个数据框列的列表:
L=[AA , AS , AD , BB , BC , CD , CF,CG ]
我需要所有项目的组合,没有特定的顺序。
但是,每个组合中我只能有一个以 A 开头的名称,但我可以有多个以 C 开头的名称或没有。
关于 B,我必须至少有 1 个 B,但可以有更多
所以我需要所有的组合
A=[AA,AS,AD] #only one of these
B=[BB,BC] #at least one of these
all_others=[CD,CF,CG] #All, 1, 2 or none of these
到目前为止,我有这个代码;
from itertools import product
for choices in product(['AA','AS','AD',None],['BB', 'BC', None], ['CD','CF', None],):
print(' '.join(column for column in choices if column))
这可行,但是,它只允许一个以 C 开头的值,但我想要 C 的product
所有组合。任何人都可以看到我可以进行的良好编辑吗?
总结;我需要列表中名称的所有组合。使用一条规则,您不能有多个以 A 开头的变量和多个以 B 开头的变量
解决方案
试试这个而不是你的for
循环:
for choices in itertools.product(['AA','AS','AD',None],['BB', 'BC', None],[' '.join(k) for j in list(itertools.combinations(['CD','CF'],i) for i in range(3)) for k in j]):
# do what you need
选择使用的输出print(' '.join(column for column in choices if column))
是:
AA BB
AA BB CD
AA BB CF
AA BB CD CF
AA BC
AA BC CD
AA BC CF
AA BC CD CF
AA
AA CD
AA CF
AA CD CF
AS BB
AS BB CD
AS BB CF
AS BB CD CF
AS BC
AS BC CD
AS BC CF
AS BC CD CF
AS
AS CD
AS CF
AS CD CF
AD BB
AD BB CD
AD BB CF
AD BB CD CF
AD BC
AD BC CD
AD BC CF
AD BC CD CF
AD
AD CD
AD CF
AD CD CF
BB
BB CD
BB CF
BB CD CF
BC
BC CD
BC CF
BC CD CF
CD
CF
CD CF
我建议您更换或删除它们None
。''
推荐阅读
- python - tokbox python api 房间创建
- c# - 在最后两行中使用未分配的局部变量 fedTax 和 netPay
- javascript - 一种在不知道嵌套 js 对象中的路径的情况下访问属性的方法
- excel - 如何使用 VLOOKUP 返回任何不同的结果?
- spring - 运行 KafkaEmbedded 进行单元测试时出现 java.lang.NoClassDefFoundError
- node.js - 将 Node.js 应用程序上传到 WinSCP 服务器
- sql - 使用 group by 子句从具有最大值的行中获取另一个值
- javascript - firebase node js TypeError:无法读取导出时未定义的属性“toId”
- python - 如何使用pandas groupby对一些行降序和一些行升序排序
- reactjs - 对象作为反应子无效(react-native)