从 free_symbols 保持 sympy lambdify 中固定的参数顺序

Keep the order of parameters fixed in sympy lambdify from free_symbols

当要求符号 .free_symbols 时,我得到了花括号中的东西(这是 set)。

如果我将此集合用作 sympy lambdify 的参数列表,它似乎被转换为 list。这在 doc 中有所暗示,但我建议在进行此转换时在此处发出警告。这样做的一个很好的理由是符号的顺序可能会在此转换中更改。

以我为例 _chiSquare.free_symbols 给出 {c_95_0, c_95_1}list({'c_95_0', 'c_95_1'}) 给出 ['c_95_1', 'c_95_0']

我喜欢使用 .free_symbols 自动生成数值函数,但是如果变量的顺序在没有通知的情况下更改,这将很难使用。

我的问题是应该如何以保持参数顺序固定的方式处理 free_symbolslambdify

我认为明确地跟踪符号比使用 free_symbols 更好。

如果您必须从 free_symbols 开始工作,那么您可以对它们进行排序以获得一致的顺序:

In [3]: sorted((x*y).free_symbols, key=lambda s: s.name)
Out[3]: [x, y]