在Mathematica中,@@@是什么意思?

时间:2009-07-17 02:03:11

标签: wolfram-mathematica

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

编辑:这是一个例子,我认为我可以发布而不违反Project Euler的精神:

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

3 个答案:

答案 0 :(得分:21)

正如其他人所指出的那样,@@@在技术上是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]}

答案 1 :(得分:9)

@@@是第1级申请的简称。

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

相当于

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

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

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

答案 2 :(得分:7)

  

f @@@ expr相当于Apply [f,expr,{1}]。

documents.wolfram.com