我正在使用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))