我知道如何使用sympy.utilities.lambdify
将用户定义的函数解析为lambdas,如下所示:
f = lambdify(('x',), 'x**2 - 4*x')
我知道我可以使用
来接受t
的功能
f = lambdify(('t',), 't**2 - 4*t')
但我如何做到这一点,以便lambdify
将't'
视为字符串中的'x'
,以便将't**2 - 4*t'
视为与'x**2 - 4*x'
相同?请注意,我不是在寻找两个变量x
和t
的函数,而是一个可以解析任一个字母(但不能同时解析两个!)的函数的函数,根据哪个变量显示在解析的字符串。另请注意,混合字母仍然无效,'t**2 - 4*x'
应该更喜欢t
并忽略x
。
答案 0 :(得分:3)
我建议首先使用sympify
将字符串转换为SymPy表达式。
然后,您可以使用free_symbols
从表达式中获取变量,例如
In [1]: (t**2 - 4*t).free_symbols
Out[1]: set([t])