我需要添加两个简单的多项式(表示为字符串)。以下示例将阐明我的要求。
input1 = '5a+6b'
input2 = '2a+3b+9c'
所需金额应如下所示:
'7a+9b+9c'
目前我已经创建了一个函数(20 行)来为我执行此任务,但我认为这可以改进。
编辑:添加我的代码
def add_domain_strings():
input_list = ['5a+6b', '2a+3b+9c']
vars_dict = {}
for input in input_list:
temp_list = input.split('+')
for i in temp_list:
split_index = None
for j in i:
if not j.isdigit():
split_index = i.index(j)
break
if i[split_index:] in vars_dict:
vars_dict[i[split_index:]] += int(i[:split_index])
else:
vars_dict[i[split_index:]] = int(i[:split_index])
sum_string = ''
for k,v in vars_dict.iteritems():
if sum_string:
sum_string += '+%s%s' % (v,k)
else:
sum_string += '%s%s' % (v,k)
return sum_string
最佳答案
sympy 确实接近你想要的
>>> import sympy
>>> a,b,c = sympy.symbols('abc')
>>> 5*a+6*b + 2*a+9*b+9*c
7*a + 9*c + 15*b
关于基于数字部分: '5a+6b' + '2a+3b+9c' = '7a+9b+9c' 的Python字符串处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609982/