我有一个字符串列表,例如var = ['x', 'y', 'z']
。我想将这些字符串用作sympy的“符号”。我正在尝试做到这一点:
for i in var:
i = symbols('i')
当然,它并没有起作用。有人可以帮我解决这个问题吗?
sympy.symbols
时,输入字符串不会被改变。var
中的每个元素作为参数来调用 symbols
,你硬编码了一个带有字符串参数 'i'
的调用。i
的赋值毫无意义,因为在下一次迭代中,名称 i
将被重新分配给 var
中的下一个元素(你甚至没有使用它)。var
中的每个元素来调用 symbols
并将返回值存储在某个地方。>>> 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'>
>>> var(','.join(variables)) # variables = ['x', 'y', 'z']
(x, y, z)
顺便提一下,有时候您会将表达式转换为符号表达式,并希望能够交互式地访问变量。您也可以使用var
来实现这一点:
>>> eq = S('x + y')
>>> var(','.join([s.name for s in eq.atoms(Symbol)]))
(x, y)
>>> eq.diff(x)
1