我有一个字符串列表,例如var = ['x', 'y', 'z']
。我想将这些字符串用作同情“符号”。我想这样做:
for i in var:
i = symbols('i')
它当然不起作用。有人可以帮我这个吗?
答案 0 :(得分:3)
几个问题:
sympy.symbols
时,输入字符串永远不会发生变异。symbols
的每个元素作为参数调用var
,并使用字符串参数'i'
对调用进行硬编码。i
的赋值是没有意义的,因为在下一次迭代中,名称i
将被重新分配给var
中的下一个元素(您不会这样做)甚至使用)。总而言之,您需要使用symbols
的每个元素调用var
并将返回值存储在某处。
>>> import sympy
>>> var_as_strings = ['x', 'y', 'z']
>>> var_as_symbol_objects = [sympy.symbols(v) for v in var_as_strings]
>>> var_as_symbol_objects
[x, y, z]
>>> type(var_as_symbol_objects[0])
<class 'sympy.core.symbol.Symbol'>
(我使用了过于冗长的变量名来使示例自我记录。)
答案 1 :(得分:1)
你所做的不起作用的原因是因为你试图将一个符号分配给一个不能改变的字符串(例如&#39; a&#39; = 1会因同样的原因而失败)。
如果您正在以交互方式工作,并且想要与您可以编写的符号同名的变量
>>> var(','.join(variables)) # variables = ['x', 'y', 'z']
(x, y, z)