[英]sympy.init_printing() ignores ipython's precision settings
[英]Why does sympy.init_printing change set notation?
當我調用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])
(它還會更改項目的順序,如圖所示)
這是Python 2 vs. 3的問題。 在Python 2中,集合的打印方式與set([...])
類似,因為在Python 2.7之前不會添加{...}
set literals。 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打印將使用{...}
表示法打印集合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.