Пишу себе небольшой решатель формул по учебным нуждам. Формула представляет собой строку вида “(k-1)z - (k-1)x - 5(k3)xz - (k2)z2x”, она разбирается на слагаемые со знаками, и я пытаюсь реализовать просчет некоторых арифметических действий с неизвестными. И возник вот такой вопрос, скорее синтаксический, чем технический - как грамотнее всего сократить подобные? Все слагаемые со знаками у меня лежат в списке в виде объектов, то есть к полям каждого надо обращаться лично:
class Term(object):
def __init__(self, sign, numfactor, coeff, factors):
self.numfactor = numfactor # 1
self.sign = sign # '-'
self.coeff = coeff # '(k2)'
self.factors = factors # ['x', 'z2']
Реально ли привести формулу к нормальному виду, сократив подобные, в один проход? Или, если нет, то как лучше это сделать?
И да, цифирка после ‘z’ - это степень, а не коэффициент, а вот все, что в скобках, это один коэффициент с параметрами. Numfactor - множитель перед коэффициентом k.