如何删除所有已定义的SymPy符号而不显式列出它们?

2024-09-30 14:16:52 发布

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

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和{}仍然存在,其中x=y**3和{}。在

同样,我知道我可以在结尾处执行del(x)和{},但是我正在从一个文件中读取变量的名称,这些名称在一个列表中。在

我只能像上面那样将符号放在一个变量中,但不知道如何迭代这个元组,然后在每个条目上使用del()在迭代结束时使用symbols命令删除上面定义的相应符号。在

我不知道正确的语法应该是什么。在

我使用的是Python3.6.5。在


Tags: 文件脚本名称列表定义符号语句元组
1条回答
网友
1楼 · 发布于 2024-09-30 14:16:52

Delete all objects in a list中解释了您的尝试没有成功的原因—当循环[x, y]时,您正在删除对对象的附加引用(在迭代过程中创建),而原始引用保持不变。在

您可以删除x和{},方法是通过^{}访问它们,如下所示

symbolsToDelete = ('x', 'y')

for z0 in symbolsToDelete:
    del globals()[z0]

相关问题 更多 >

    热门问题