【发布时间】:2018-06-19 01:28:31
【问题描述】:
这里是 SymPy 和 Python 新手。
我运行一个迭代多个测试文件的脚本。每个文件都定义了一组要使用的符号。在每次循环迭代结束时,我想删除之前使用 symbols() 语句创建的所有符号,仅此而已,因为我正在使用其他非符号变量。
我不能这样做 del(x) 和 del(y) 因为每次迭代都会加载一组不同的符号。
我可以将使用的符号列表放入列表或元组中,然后在每次迭代结束时,检查已创建的符号列表,并使用 del 一次删除一个但我可以不要让它工作。
这是一个例子。
from sympy import *
x,y = symbols('x y')
symbolsToDelete = (x,y) #I also tried symbolsToDelete = ('x','y')
x=y**3
y=99
#now I want to delete all symbols defined above. But I can't
#use del(x) or del(y) explicitly. So I tried
for z0 in symbolsToDelete:
del(z0)
但是上面的不行,x和y还在,还有x=y**3和y=99。
再次,我知道我可以在最后执行del(x) 和del(y),但我正在从文件中读取变量的名称,并且名称在列表中。
我只能像上面那样将符号放在一个变量中,但不知道如何迭代这个元组,然后在每个条目上使用 del() 以在迭代结束时使用 @987654333 删除上面定义的相应符号@ 命令。
我不知道正确的语法应该是什么。
我正在使用 Python 3.6.5。
【问题讨论】:
-
顺便说一句:在
y=99之后,Python 变量y不再是SymPy 符号,它只是一个Python 整数99。之前的赋值y = symbols('y')完全被遗忘了。将 SymPy 符号视为“变量”是不可取的,因为它们不会变化:它们是不可变的,它们不能被“赋值”。