当我致电sympy.init_printing()
时,请将记事本从{a, b, c}
更改为set([a, b, c])
。为什么会这样?
In [1]: import sympy
In [2]: (x, y, z) = sympy.symbols("x y z")
In [3]: x+y**z
Out[3]: x + y**z
In [4]: (x+y**z).free_symbols
Out[4]: {z, y, x}
In [5]: sympy.init_printing()
In [6]: x+y**z
Out[6]:
z
x + y
In [7]: (x+y**z).free_symbols
Out[7]: set([x, y, z])
In [8]: {1, 2, 3}
Out[8]: set([1, 2, 3])
(它还会更改所示项目的顺序)
答案 0 :(得分:2)
这是Python 2 vs. 3的问题。在Python 2中,集合的打印方式与set([...])
类似,因为在Python 2.7之前不会添加{...}
集合文字。 SymPy打印机是在Python 3之前制作的。
在SymPy版本1.0之后,SymPy不再支持Python 2.6,因此在SymPy master中已修复此问题,以便始终使用{...}
(即使在Python 2中)在https://github.com/sympy/sympy/pull/11116打印字符串打印机,但是显然我错过了漂亮的打印机也这样做。我在https://github.com/sympy/sympy/pull/12087处修了一下。
因此,简而言之,在这些更改之后(即,在SymPy的开发版本和所有未来版本中),SymPy打印将使用{...}
表示法打印集合。