假设我定义了n
Sympy集。设置s
为:
s = FiniteSet('red', 'yellow', 'green')
然后我还有三套:
a = FiniteSet('red')
b = FiniteSet('yellow')
c = FiniteSet('green')
显然,a
、b
和c
是s
的子集。当我让sympy计算这三个子集的Union
时,我将得到s
但症状作为输出:
>>>Union(a,b,c)
{'green', 'yellow', 'red'}
因此,我希望获得s
。
有没有办法用Sympy
实现这一点?
您的期望值可能需要格式塔转换。您正在使用Python,并且已经为变量分配了值。您的期望是,当您打印与变量s
具有相同值的变量d
时,您将看到变量s
——但这不是print(variable)
的作用:它打印值,而不是任何/所有相同变量的列表。
但您可以询问SymPy这两个变量是否具有相同的值:
>>> d == s
True
您也可以(仔细地(查看locals()
,以找到哪个名称与d
:具有相同的值
>>> L = locals() # a dictionary of names and values
>>> [i for i in L if i != 'd' and type(L.get(i,None)) == type(d) and L[i] == d]
['s']
(但locals
中任何匹配的内容都将被打印,而不仅仅是s
。(