将字符串列表 SymPy 转换为符号并在求解集中使用
Convert list of strings SymPy to symbols and use in solveset
post“”讨论了如何从字符串列表生成 SymPy 符号。我的问题是在 SymPy 计算中使用这些符号 x、y 和 z 需要哪些步骤?
我尝试了一些方法
from sympy import symbols, solveset
var_as_strings = ['x', 'y', 'z']
var_as_symbol_objects = [sympy.symbols(v) for v in var_as_strings]
var_as_symbol_objects
for x1, x2 in zip(var_as_symbol_objects, var_as_strings):
x1 = symbols(x2)
soln = solveset(x-y-z, x)
但我收到错误“NameError:名称 'x' 未定义”。非常感谢任何帮助。
中列出的第一个陷阱回答了这个问题
您需要手动将符号存储到所需的变量中 (x = symbols('x')
),或者从 sympy.abc
中导入它们 (from sympy.abc import x
)。
出现名称错误是因为您尚未在代码中定义 x
、y
或 z
。
您可以使用 var
从字符串列表(或 space 或逗号分隔名称的字符串)在当前名称 space 中创建 Python 变量:
>>> names = 'x y z' # or 'x, y, z'
>>> var(names)
(x, y, z)
>>> var(list('xyz'))
[x, y, z]
>>> var(set('xyz'))
{x, y, z}
在所有情况下,在发出 var
命令后,您将能够使用已分配有相同名称的 SymPy 符号的变量。
post“
我尝试了一些方法
from sympy import symbols, solveset
var_as_strings = ['x', 'y', 'z']
var_as_symbol_objects = [sympy.symbols(v) for v in var_as_strings]
var_as_symbol_objects
for x1, x2 in zip(var_as_symbol_objects, var_as_strings):
x1 = symbols(x2)
soln = solveset(x-y-z, x)
但我收到错误“NameError:名称 'x' 未定义”。非常感谢任何帮助。
您需要手动将符号存储到所需的变量中 (x = symbols('x')
),或者从 sympy.abc
中导入它们 (from sympy.abc import x
)。
出现名称错误是因为您尚未在代码中定义 x
、y
或 z
。
您可以使用 var
从字符串列表(或 space 或逗号分隔名称的字符串)在当前名称 space 中创建 Python 变量:
>>> names = 'x y z' # or 'x, y, z'
>>> var(names)
(x, y, z)
>>> var(list('xyz'))
[x, y, z]
>>> var(set('xyz'))
{x, y, z}
在所有情况下,在发出 var
命令后,您将能够使用已分配有相同名称的 SymPy 符号的变量。