19# guocong89
7楼的例子中
In[25]:= Level[a b + Sin[a b], -1]
Level[a b Sin[a b], -1]
Level[(a + b) Sin[a + b], -1]
Level[(a + b) + Sin[a + b], -1]
Out[25]= {a, b, a b, a, b, a b, Sin[a b]}
Out[26]= {a, b, a, b, a b, Sin[a b]}
Out[27]= {a, b, a + b, a, b, a + b, Sin[a + b]}
Out[28]= {a, b, a, b, a + b, Sin[a + b]}
分别对应
x + Sin[x]
x Sin[a b]
x Sin[x]
x + Sin[a + b]
如果Level中出现的a b或a+b的个数少于眼睛看到的(目前的情况),则只替换第一个。
连加失效是因为算术运算优先级高,所以后面用了HoldAllComplete
Level[Hold[a - b + a - b + Sin[a - b]], -1]
Level[Hold[(a - b) (a - b) Sin[a - b]], -1]
Level[Hold[(a - b + c) Sin[a - b]], -1]
Level[Hold[a - b + c Sin[a - b]], -1]
{a, -1, b, -b, a, -1, b, -b, a, -1, b, -b, a - b, Sin[a - b],
2 a - 2 b + Sin[a - b]}
{a, -1, b, -b, a - b, a, -1, b, -b, a - b, a, -1, b, -b, a - b,
Sin[a - b], (a - b)^2 Sin[a - b]}
{a, -1, b, -b, c, a - b + c, a, -1, b, -b, a - b,
Sin[a - b], (a - b + c) Sin[a - b]}
{a, -1, b, -b, c, a, -1, b, -b, a - b, Sin[a - b], c Sin[a - b],
a - b + c Sin[a - b]}
也是这样。 |