简单地从线性组合中生成一个列表



我正在使用sympy进行一些计算,但我需要使用我必须定义的规则来处理乘法运算的结果。假设我有

a, b, c, d = symbols('a b c d', commutative=False)
res = a*b + b*c + c*d

我想知道如何编写一个函数来获取res并给出这种的列表

[[a,b],[b,c],[c,d]]

因为每次我尝试执行类似CCD_ 1的操作时,python都会抛出异常CCD_。提前感谢

目前还没有这方面的功能,但您可以制作这样的功能:

def factors(expr):
result = []
for term in Add.make_args(expr):
flat_factors = []
for factor in Mul.make_args(term):
symbol, power = factor.as_base_exp()
flat_factors += [symbol] * power
result.append(flat_factors)
return result

这就给出了:

In [74]: factors(a*b + b*c + c*d)
Out[74]: [[a, b], [b, c], [c, d]]
In [75]: factors(a**2*b + a*b**2)
Out[75]: [[a, b, b], [a, a, b]]

这是一种方法:

[x.as_ordered_factors() for x in res.as_ordered_terms()]

不确定,但你想做这样的事情吗?

res = 'a*b + b*c + c*d'
def list_func(res):
list1 = res.split('+')
return ([item.split('*') for item in list1])
print(list_func(res))

最新更新