Найти - Пользователи
Полная версия: Сократить подобные
Начало » Python для экспертов » Сократить подобные
1
Enchantner
Пишу себе небольшой решатель формул по учебным нуждам. Формула представляет собой строку вида “(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.
Enchantner
Пока решил так: переопределил __lt__ у класса Term и упорядочил по коэффициентам, потом прохожусь в цикле по слагаемым и если у следующего с предыдущим совпадают множители - считаю коэффициент, добавляю к предыдущему элементу и pop()-аю ненужный из массива. Но это не помогает при случаях расстановки через несколько элементов, а проходить на каждом элементе заново весь массив неохота.
villager
про вычисление формул я здесь писал, может подойдет…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB