Форум сайта python.su
Пишу себе небольшой решатель формул по учебным нуждам. Формула представляет собой строку вида “(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']
Отредактировано (Окт. 10, 2010 16:03:50)
Офлайн
Пока решил так: переопределил __lt__ у класса Term и упорядочил по коэффициентам, потом прохожусь в цикле по слагаемым и если у следующего с предыдущим совпадают множители - считаю коэффициент, добавляю к предыдущему элементу и pop()-аю ненужный из массива. Но это не помогает при случаях расстановки через несколько элементов, а проходить на каждом элементе заново весь массив неохота.
Офлайн
про вычисление формул я здесь писал, может подойдет…
Офлайн