【问题标题】:In Mathematica, what does @@@ mean?在 Mathematica 中,@@@ 是什么意思?
【发布时间】:2010-11-11 14:05:54
【问题描述】:

我一直在解决Project Euler 上的问题,其他人发布的一些解决方案使用了三重符号,即“@@@”。在 v7 的帮助浏览器中,我找到了 @@ 的条目(表示它是“应用”的中缀版本),但没有找到 @@@ 的条目。什么意思?

编辑:这是一个示例,我认为我可以在不违反欧拉计划精神的情况下发布该示例:

bloc[n_, f_][t_] := {f @@@ #, #~Tr~f} & /@ Join @@ Partition[t, {n, n}, 1];

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    正如其他人所指出的那样,@@@ 在技术上是 Apply 的简写,带有可选的第三个参数,正如在 documentation for Apply 中深入解释的那样。

    但我喜欢考虑

    f @@@ {{a,b}, {c,d}, {e,i}}
    

    作为

    的简写
    f @@#& /@ {{a,b} {c,d}, {e,i}}
    

    换句话说,取一个纯函数(简写:...#...&),它对参数列表执行Apply(简写:@@),然后Map(简写:/@)超过此类参数列表的列表。 结果是

    {f[a,b], f[c,d], f[e,i]}
    

    【讨论】:

    • 我必须以几种方式运行它才有意义!但你是对的,这似乎是最自然的解释。
    【解决方案2】:

    @@@ 是 Apply at level 1 的简写形式。

    f @@@ {{a, b, c}, {d, e}}
    

    等价于

    Apply[f, {{a, b, c}, {d, e}}, {1}]
    

    参考:http://reference.wolfram.com/mathematica/ref/Apply.html

    您可能需要扩展范围和级别规范部分。

    【讨论】:

      【解决方案3】:

      f @@@ expr 等价于 Apply[f, expr, {1}]。

      documents.wolfram.com

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        • 2017-06-11
        • 2018-03-05
        • 2023-03-27
        • 2016-08-17
        • 2010-12-28
        相关资源
        最近更新 更多