wolfram-mathematica - 与某些图案不同的匹配头

标签 wolfram-mathematica

我想匹配头部与 f 不同的表达式。

这有效

[In]  !MatchQ[t[3], x_ /; Head[x] == f]
[Out] True

但不是这个
 [In]  MatchQ[t[3], x_ /; Head[x] != f]
 [Out] False

为什么第二种解决方案不起作用?我怎样才能让它工作?

最佳答案

为什么这不起作用:您必须使用 =!= ( UnsameQ ),而不是 != ( Unequal ) 用于结构比较:

In[18]:= MatchQ[t[3],x_/;Head[x]=!=f]
Out[18]= True

通过评估可以看出原因:
In[22]:= Head[t[3]]!=f
Out[22]= t!=f

运营商 == ( Equal ) 和 != ( Unequal ) 在双方平等(或不平等)的事实无法成立时,对自己进行评估。这在符号环境中是有意义的。我更详细地考虑了这个话题 here ,哪里还有SameQUnsameQ进行了讨论。

也有更优雅的方式来表达相同的模式,这也会更高效,例如:
MatchQ[t[3],Except[_f]]

关于wolfram-mathematica - 与某些图案不同的匹配头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7661235/

相关文章:

matrix - 在 Mathematica 中构造大块矩阵的最有效方法是什么?

wolfram-mathematica - 使用 Mathematica 求两个函数的交集

math - 由空间中两点之间的弧长参数化的螺旋方程

wolfram-mathematica - 在嵌套列表中如何测试给定的索引序列在 mathematica 中是否有效

function - 生成局部变量(作为常量)时出错

wolfram-mathematica - 如何在 Mathematica Notebook Styles 中填写 CellFrameLabels?

wolfram-mathematica - 数学 : AbsoluteOptions not working properly

wolfram-mathematica - 数学 : Write matrix-data to XML ; Read matrix-data from XML

python-3.x - 等效代码,不同结果(Python、Mathematica)

sorting - 鸽子函数: where to insert x into a sorted list