Рассмотрим следующий симпози-код:
from sympy import Add
from sympy.abc import x
t1 = 2+2*x
t2 = x
myeq = sp.UnevaluatedExpr(Add(sp.UnevaluatedExpr(t1), sp.UnevaluatedExpr(t2), evaluate=False))
# BUG! Will print: x + 2*x + 2
# Yet it should print: 2+2*x+x
print(myeq)
Этот фрагмент кода был адаптирован из этого ответа.Там термины проще, поэтому Add
сохранил порядок.Но как я могу заставить Add
сохранить порядок и в этом случае?
(Примечание: если мы изменим условия на t1=x
и t2=x**2
, мой подход с использованием sp.UnevaluatedExpr
работает, ноОригинальный ответ, который не имел этих терминов, не имеет. Увы, для моего конкретного случая, даже не используя sp.UnevaluatedExpr
работает.)