我正在尝试进行泛型子表达式替换。
我想把任何形式为x*y
的表达式替换为c
。
请注意,x
和y
可以是表达式中的任何符号。
在下面的代码中,我使用Wild来实现这一点,但显然我无法只使用Wild匹配符号,而不是子表达式-即使使用isinstance=[sp.Symbol]
。
import sympy as sp
a, b, c = sp.symbols('a b c')
f= a*b - b
x = sp.Wild('x', isinstance=[sp.Symbol])
y = sp.Wild('y', isinstance=[sp.Symbol])
expr = f.replace(x*y, c)
这导致以下结果,
print expr
c
但预期的答案是:c - b
2条答案
按热度按时间s1ag04yj1#
isinstance
不是Wild
的真实的参数。你要找的参数是
properties
。虽然似乎没有文档记录,但参数接受一系列函数,这些函数应该对匹配的表达式为真。您可以使用它将符号与oxalkeyp2#
试试这个:
在这个例子中似乎工作得很好: