如何在python中使用符号列表进行sympy计算?

2024-10-03 23:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Spyder上使用python 3.7。下面是我的简单代码,它将字符串元素['a','b']作为符号存储在列表L中。作为输出,我有一个新的列表L,其中有两个符号[a,b]。但当我试图在计算中使用这些符号时,我得到一个错误,即a&;b没有定义。关于如何解决这个问题有什么建议吗

基本上,我想做的是使用列表中的字符串元素作为符号进行sympy计算。欢迎就其他方法提出任何建议。多谢各位

    import sympy as sm
    L=['a','b']
    print(L)
    for j in range(len(L)):
        L[j] = sm.symbols(L[j])
    B=sm.solve(a**2 - 1, a)
    print(B)

以下是错误:

runfile('C:/Users/bhise/.spyder-py3/temp.py', wdir='C:/Users/bhise/.spyder-py3')
['a', 'b']
Traceback (most recent call last):

  File "<ipython-input-43-6826047bb7df>", line 1, in <module>
    runfile('C:/Users/bhise/.spyder-py3/temp.py', 
wdir='C:/Users/bhise/.spyder-py3')

  File "C:\Users\bhise\Anaconda3\lib\site- 
packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile
    execfile(filename, namespace)

  File "C:\Users\bhise\Anaconda3\lib\site- 
packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/bhise/.spyder-py3/temp.py", line 10, in <module>
    B=sm.solve(a**2 - 1, a)

NameError: name 'a' is not defined

Tags: 字符串inpy元素列表linepy3符号
2条回答

你应该按照你想要的方式来定义你的符号

前。 [a,b,c]=sm.符号('a,b,c')

现在您可以在代码中使用a、b、c

在L[j]=sm.symbols(L[j])中使用它的方式,L[j]实际上并没有将a作为变量

或者在您的情况下,您可以使用它:

from sympy import sm

L=['a','b']
print(L)

for j in range(len(L)):
    locals()[L[j]] = sm.symbols(L[j])

您可以这样尝试:

>>> L = ['a', 'b']
>>> a, b = map(Symbol, L)
>>> type(a)
<class′sympy.core.symbol.Symbol′>

然后在任何你想要的地方使用ab

相关问题 更多 >