在mathematica中选择特定的符号定义(而不是转换规则)

2023-11-24

我有以下问题。

f[1]=1;
f[2]=2;
f[_]:=0;

dvs = DownValues[f];

这给出了

dvs = 
   {
      HoldPattern[f[1]] :> 1, 
      HoldPattern[f[2]] :> 2, 
      HoldPattern[f[_]] :> 0
   }

我的问题是我只想提取 f[1] 和 f[2] 等的定义,而不是一般定义 f[_],而且我不知道该怎么做。

I tried,

Cases[dvs, HoldPattern[ f[_Integer] :> _ ]] (*)

但它没有给我任何东西,即空列表。

有趣的是,将 HoldPattern 更改为临时^脚注

dvs1 = {temporary[1] :> 1, temporary[2] :> 2, temporary[_] :> 0}

并发行

Cases[dvs1, HoldPattern[temporary[_Integer] :> _]] 

gives

{temporary[1] :> 1, temporary[2] :> 2}

它有效。这意味着(*)几乎是一个解决方案。

我不明白为什么它适用于临时而不适用于 HoldPattern?我怎样才能让它直接与 HoldPattern 一起工作?

当然,问题是什么被评估,什么不被评估等等。在 Mathematica 中编码时的永恒问题。真正的大师的东西......

最诚挚的问候 佐兰

脚注 = 我手动输入它作为替换“/.HoldPattern -> 临时”实际上执行 f[_]:=0 规则并给出一些奇怪的东西,我当然想避免这种执行。


原因是你必须逃避HoldPattern,也许与Verbatim:

In[11]:= Cases[dvs, 
            Verbatim[RuleDelayed][
               Verbatim[HoldPattern][HoldPattern[f[_Integer]]], _]]

Out[11]= {HoldPattern[f[1]] :> 1, HoldPattern[f[2]] :> 2}

只有少数几个头需要这样做,并且HoldPattern是其中之一,正是因为它通常对模式匹配器来说是“不可见的”。为您temporary或其他负责人,这没有必要。顺便注意一下,该模式f[_Integer]被包裹在HoldPattern- 这次HoldPattern用于其直接目的 - 保护模式免受评估。注意RuleDelayed也被包裹在Verbatim- 这实际上是另一个常见的情况Verbatim- 这是需要的,因为Cases有一个涉及规则的语法,我们不希望Cases在这里使用这个解释。所以,在我看来,这是一个很好的例子来说明两者HoldPattern and Verbatim。 另请注意,可以完全实现目标HoldPattern,像这样:

In[14]:= Cases[dvs,HoldPattern[HoldPattern[HoldPattern][f[_Integer]]:>_]]

Out[14]= {HoldPattern[f[1]]:>1,HoldPattern[f[2]]:>2}

然而,使用HoldPattern用于转义目的(代替Verbatim)在国际海事组织(IMO)概念上是错误的。

EDIT

澄清一下情况Cases,这是一个简单的示例,我们使用以下语法Cases涉及到变换规则。此扩展语法指示Cases不仅找到并收集匹配的棋子,而且在找到它们后立即根据规则对其进行转换,因此结果列表包含转换后的棋子。

In[29]:= ClearAll[a, b, c, d, e, f];
Cases[{a, b, c, d, e, f}, s_Symbol :> s^2]

Out[30]= {a^2, b^2, c^2, d^2, e^2, f^2}

但是如果我们需要找到本身就是规则的元素怎么办?如果我们尝试这样做:

In[33]:= Cases[{a:>b,c:>d,e:>f},s_Symbol:>_]
Out[33]= {}

从那时起它就不起作用了Cases将第二个参数中的规则解释为使用扩展语法的指令,找到一个符号并将其替换为_。由于默认情况下它在级别 1 上搜索,而符号在此处位于级别 2 上,因此它什么也没找到。观察:

In[34]:= Cases[{a:>b,c:>d,e:>f},s_Symbol:>_,{2}]
Out[34]= {_,_,_,_,_,_}

无论如何,这都不是我们想要的。因此,我们必须强制Cases将第二个参数视为普通模式(简单语法,而不是扩展语法)。有几种方法可以做到这一点,但它们都“逃避”RuleDelayed (or Rule) 某种程度上来说:

In[37]:= Cases[{a:>b,c:>d,e:>f},(s_Symbol:>_):>s]
Out[37]= {a,c,e}

In[38]:= Cases[{a:>b,c:>d,e:>f},Verbatim[RuleDelayed][s_Symbol,_]:>s]
Out[38]= {a,c,e}

In[39]:= Cases[{a:>b,c:>d,e:>f},(Rule|RuleDelayed)[s_Symbol,_]:>s]
Out[39]= {a,c,e}

在所有情况下,我们要么避免使用扩展语法Cases(最后两个例子),或者设法利用它来发挥我们的优势(第一种情况)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在mathematica中选择特定的符号定义(而不是转换规则) 的相关文章

  • 如何在 Mathematica 中定义与 D 交换的函数

    我想实现一个运算符f通勤与差异化D Unprotect D D f y x f D y x Protect D D f Sin x x D f Sin x 1 x 不幸的是这段代码产生了两个不同的结果 f Cos x as expected
  • 具有断轴和交错颜色条的直方图

    我有这些数据 a b c d e alpha 5 51 0 60 0 12 26 90 76284 53 beta 3 39 0 94 0 17 0 20 0 20 gamma 7 98 3 34 1 41 7 74 28394 93 de
  • 特征向量变换的差异:Mathematica 与 SciPy

    类似的问题之前曾在这里被问过 但似乎没有人回答我的例子 我使用 Mathematica 和 SciPy 计算矩阵 A 的特征值和特征向量 特征值一致 但特征向量则不然 1 最低 特征值 特征向量一致 2 Mathematica 和 SciP
  • 制作自定义输入表和简短输入表

    我经常希望看到数学的图形对象不在FullForm但更具可读性InputForm能够通过双击来选择代码的一部分 并轻松地将此代码复制到新的输入中Cell 但默认的InputForm不允许这样做 因为InputForm默认显示为String 不
  • 如何在mathematica中应用涉及一百个变量的规则

    我有一个涉及 x1 x2 x100 的表达式 我还有一个列表lst有 100 个元素 如何将规则应用于此表达式以实现如下所示的效果 exp x1 gt lst 1 x2 gt lst 2 x100 gt lst 100 Thanks exp
  • Mathematica 中的空值和非空值测试

    在 Mathematica 中测试某个值是否为 Null 的最佳 最干净 建议的方法是什么 并且不为空 例如 a Null b 0 f n If n Null 1 2 f a f b 结果是 1 If 0 Null 1 2 我本来期望 f
  • 将声音导出为 WAV 文件

    我从来没有在 Mma 中过多地使用声音 I have t Sound List Violin SoundNote 6 我怎样才能导出t作为 WAV 文件 当我尝试显而易见的事情时 Export c test wav t I get 在这个旧
  • 对嵌套列表内的列表进行排序

    我有一个嵌套列表 9 8 7 8 7 6 7 6 5 6 5 4 5 4 3 4 3 2 3 2 1 我需要对列表中的列表进行排序才能创建 7 8 9 6 7 8 5 6 7 4 5 6 3 4 5 2 3 4 1 2 3 我该怎么做呢 你
  • Mathematica 中的语法着色

    用户定义的函数符号如f in f x 2 x 或变量符号 例如lotto in lotto Table 2 10 自动着色 在 M8 上的语法着色中 没有为此提供选项 仅限未分配值的局部变量或全局符号 这并不完全是您所要求的 但可能对您有用
  • 在 MathLink 函数中检查中止?

    我刚刚发现这样的MathLink功能为LinkWrite and LinkRead有类似其内部的东西CheckAbort吸收任何中止 并且不会进一步传播它们 这可以很容易地显示为LinkRead link LinkLaunch First
  • 如何在 Mathematica 中生成这样的图像

    I am thinking of process an image to generate in Mathematica given its powerful image processing capabilities Could anyo
  • 如何在数学中为给定旋转轴的 3D 绘图制作动画

    如果给定标准化旋转轴 例如 1 Sqrt 3 1 Sqrt 3 1 Sqrt 3 和 3d 图 例如 z x y Exp Sqrt x 2 y 2 Power 4 3 1 Power 4 3 1 Sqrt 1 2 Sqrt x 2 y 2
  • 下标变量

    有没有什么方法可以强制 Mathematica 独立于无下标变量来处理下标变量 进一步来说 比如说 我有以下定义 Subscript b 1 1 2 Subscript b 2 3 4 b Join Subscript b 1 Subscr
  • 在 Mathematica 中使用图形进行渐变填充

    我如何使用以下内容创建Rectangle in Graphics Using Polygon 你可以 Graphics EdgeForm Black Polygon 0 0 3 0 3 1 0 1 VertexColors gt White
  • R 中从右到左的运算符结合性可能吗?

    我是 R 新手 我刚刚发现我患有支架恐惧症 https mathematica stackexchange com a 17315 2266 请参阅链接中的评论 我喜欢这种方式magrittr符号 gt 有效 因为它在某些情况下避免了嵌套括
  • 根据 Mathematica 中的另一个列表值拆分列表

    在 Mathematica 中我有一个点坐标列表 size 50 points Table RandomInteger 0 size RandomInteger 0 size i 1 n 以及这些点所属的聚类索引列表 clusterIndi
  • 如何默认显示动画控件

    在mathematica中这个简单的控制对象中 如下所示 Control x 0 1 我们必须将鼠标指针移至对象的右上角才能获得名为 显示动画控件 的提示 然后单击它以查看播放 前进等动画控件 有没有办法通过设置一些选项来默认情况下打开所有
  • 自动保存笔记本(或mathematica中的其他类型文件)文件

    我现在有时会遇到这个问题 部分原因是 Microsoft Office 自动保存您正在使用版本和自动恢复处理的文件 很多时候 当我在mathematica中启动一个新笔记本来做一些测试或其他事情时 我经常忘记保存我正在做的事情 时不时地 根
  • 将纬度/经度转换为 X/Y,以便在美国地图图像上进行阿尔伯斯投影

    我正在尝试使用 C 或 Javascript 将纬度 经度转换为 X Y 坐标 以将带有 CSS 的 div 左 上 定位到美国地图的背景图像上 美国的标准地图投影是阿尔伯斯投影 如下所示 但 StackOverflow 仅提供参考基本墨卡
  • ArrayPlot 中的自定义 ColorFunction/ColorData(以及类似函数)

    这与西蒙有关关于更改默认 ColorData 的问题 https mathematica stackexchange com q 4712 121在数学中 虽然解决方案都解决了改变的问题ColorData在线图中 我不太发现讨论对改变Col

随机推荐

  • 如何检测是否发生了回滚?

    我正在寻找大型业务应用程序中的错误 其中业务流程失败但部分保留到数据库中 更难以弄清楚的是 该过程每隔几周才会失败一次 每次失败之间都会成功处理数十万次 当并发 工作进程数量增加时 错误频率似乎会增加 到目前为止 我们已经能够通过该程序重新
  • 如何使用 pyodbc 获取 SQL Server 存储过程返回值?

    我的团队使用基于 Python 的 wiki 服务器 该服务器调用 SQL Server 数据库上的存储过程 理想情况下 我们希望从存储过程返回整数值 1 0 1 以显示基本结果 根据一个Google 网上论坛 2008 年主题 pyodb
  • String.format() 抛出 FormatFlagsConversionMismatchException

    这段代码在 Java 1 6 中运行良好 public static String padLeft String s int n if n lt 0 return s int noOfSpaces n 2 String output noO
  • 无法在 compose 中使用服务名称从 (fluidd) logdriver 登录

    我在 docker 中有以下设置 应用程序 httpd Fluentd 弹性搜索 Kibana 应用程序的日志驱动程序的配置正在描述 fluidd 容器 日志将保存在 ES 中并显示在 Kibana 中 当日志驱动程序配置如下时 它可以工作
  • Android Material:状态栏颜色不会改变

    我正在开发一个简单的应用程序来测试材料设计 我在用着com android support appcompat v7 21 0 0我的活动如下所示 public class MyActivity extends ActionBarActiv
  • 双击可编辑内容

    我有一个p用一些文字标记 我正在努力做到这一点contenteditable但仅限于双击 如何防止浏览器在单击 p 时将光标放在 p 上 而仅在双击时才这样做 jQuery p dblclick function e p css curso
  • 使用传单库在弹出窗口中绘制条形图

    快速提问 我在 sql server 中有一些数据 我已将其加载到 RStudio 中 我已经为数据制作了条形图 现在我正在使用传单库 并使用纬度和经度在地图上绘制一个点 我希望能够在用户单击该点时使用弹出窗口在其中显示条形图 条形图代码
  • 如何在 PHP 中创建 REST API? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我一直在开发游戏网站 并计
  • Java 的类型参数通配符到底意味着什么? Foo 和 Foo 之间的真正区别是什么?

    对于通用接口 public interface Foo
  • 如何在环境变量PATH中搜索并替换字符串?

    是否有任何命令可以批量搜索并替换环境变量中的字符串PATH 例如环境变量的内容PATH is C windows system32 C windows C windows System32 Wbem C windows System32 W
  • iPhone 上“unsigned int”和“int”之间的性能有区别吗?

    或者重新表述这个问题 使用无符号值是否会降低性能 一般来说 iPhone ARM 处理器上性能最高的类型 16 位签名 32 位签名 等 是什么 这总是取决于 For 循环将有符号整数作为计数器和限制会快一点 因为在 C 中编译器可以自由地
  • 命名空间图像和编辑日志

    摘自 Hadoop 权威指南 在主题下名称节点和数据节点其中提到 namenode 管理文件系统名称空间 它保持了 文件系统树以及所有文件和目录的元数据 那个树 该信息永久保存在本地磁盘上 两个文件的形式 命名空间图像和编辑日志 辅助名称节
  • 使用 JENA 的参数化 SPARQL 查询

    我正在尝试使用 Jena 框架 JSP 和 JAVA 构建一个小型语义 Web 应用程序 我有一个远程 SPARQL 端点 并且已经编写了一个运行良好的简单查询 但现在我需要使用一些参数 到目前为止 这是我的代码 final static
  • Angular 2、DomSanitizer、bypassSecurityTrustHtml、SVG

    我一直在 html 字符串中使用 DomSanitizer 和 SVG 在当前版本的 Angular 之前 这工作得很好 this domSanitizer bypassSecurityTrustHtml content 现在我正在取回一个
  • 关闭 django-allauth 中的用户社交注册?

    我注意到查看 django allauth 模板时 当用户注册关闭或禁用时 可以将用户重定向到 signup close html 熟悉该模块的人是否知道是否可以在 settings py 中设置预先配置的设置来关闭通过现有社交应用程序的新
  • 在发送请求之前更改图像的 src

    我对这个问题做了很多研究 但没有成功 本质上我想做的是 1 将所有图像的 src 属性替换为占位符 例如 blank gif 2 添加带有原始图像位置的 HTML5 data original 属性 3 Lazyload图像 需要 data
  • Windows cmd echo / pipeline 在末尾添加额外的空间 - 如何修剪它?

    我正在编写一个执行命令行应用程序的脚本 该应用程序需要用户在运行时输入 遗憾的是未提供命令行参数 所以我的第一次尝试是这样的 echo off echo N echo dp0 SomeOther Directory echo Y call
  • 为什么 System.Int32 占用 24 个字节?

    If an int占用4个字节 为什么System Int32将整数装箱到对象中时需要 24 个字节 例如 int i 3 object o i 在 C CLR 中 引用类型有一定规模的开销 托管对象的布局非常简单 托管对象包含实例数据 指
  • 确定 Web http 身份验证方法

    如何确定 REST Web 服务是否使用 Basic Kerberos NTLM 还是许多其他身份验证方法之一 当您发送未经身份验证的请求时 服务必须响应 HTTP 1 1 401 Unauthorized 并且响应包含WWW Authen
  • 在mathematica中选择特定的符号定义(而不是转换规则)

    我有以下问题 f 1 1 f 2 2 f 0 dvs DownValues f 这给出了 dvs HoldPattern f 1 gt 1 HoldPattern f 2 gt 2 HoldPattern f gt 0 我的问题是我只想提取