首页 > 解决方案 > 重新排列 sympy 输出

问题描述

有没有办法控制 sympy 输出表达式的顺序?例如:

>>> p
a*(-b*exp(x) + 1)

我可以强迫同情写吗

a*(1 - b*exp(x))

反而?

(如果有人想知道 - 它通过 pylatex 直接进入 LaTeX 文档,因此出于格式化原因,顺序对我很重要)

标签: pythonsympy

解决方案


恐怕没有办法做到这一点。我认为的主要问题是,对于涉及减号的总和来说,顺序自然是“错误的”。某些情况已得到修复,例如1 - x您可能在 https://github.com/sympy/sympy/pull/15985中预期的打印 还有另一个开放 PR 可以更普遍地解决问题: https ://github.com/sympy /sympy/issues/16090

编辑:有init_printing(order='old')一个我以前不知道的:

In [26]: a*(1 - b*exp(x))
Out[26]: 
  ⎛     x    ⎞
a⋅⎝- b⋅ℯ  + 1⎠

In [27]: init_printing(order='old')

In [28]: a*(1 - b*exp(x))
Out[28]: 
  ⎛       x⎞
a⋅⎝1 - b⋅ℯ ⎠

In [29]: latex(a*(1 - b*exp(x)))
Out[29]: 'a \\left(1 - b e^{x}\\right)'

我没有进行过广泛的测试,但它似乎按照我想要的方式工作。


推荐阅读