簡體   English   中英

為什么sympy.init_printing會更改設置符號?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM