【发布时间】:2018-02-07 21:45:49
【问题描述】:
我有一个字符串列表:
A = ['a','b']
我想解析这个列表并编写以下表达式:
a = x**2
b = a*x
其中x 是sympy 符号,稍后我会将这些表达式用于其他操作,如微分等。问题是a 和b 是列表中的字符串。我无法将它们用作表达式!我该怎么做?
【问题讨论】:
我有一个字符串列表:
A = ['a','b']
我想解析这个列表并编写以下表达式:
a = x**2
b = a*x
其中x 是sympy 符号,稍后我会将这些表达式用于其他操作,如微分等。问题是a 和b 是列表中的字符串。我无法将它们用作表达式!我该怎么做?
【问题讨论】:
一般来说,你不会。尝试设置动态变量名称通常是设计不佳的标志。如果您确实需要这些符号来向外界表示事物,请尝试保留标签和值。例如,字典可以为你做这样的事情。
symbol = { 'a': x**2; 'b': x**3 }
您可以从那里添加符号、更改值等。例如,
symbol = { 'a': x**2 }
symbol['b'] = symbol['a'] * x
当然,您可以构建一个表达式字符串并在内容上使用eval,但这通常很危险且难以维护。
更广泛的可能性是操作字符串值并编写您想要运行的 Python 脚本。将其写入文件,然后使用os 或subprocess 命令执行。
这会让你感动吗?
【讨论】:
a 和b(字典符号的键)仍然是字符串,您最终将如何在 sympy 区分中使用它?
eval 更敏感。