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

Eri*_*ric 16 wolfram-mathematica

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

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

bloc[n_, f_][t_] := {f @@@ #, #~Tr~f} & /@ Join @@ Partition[t, {n, n}, 1];
Run Code Online (Sandbox Code Playgroud)

dre*_*ves 24

正如其他人所指出的那样,@@@从技术上来说,是Apply一个可选的第三个参数的简写,正如文档中Apply深入解释的那样.

但我想要考虑一下

f @@@ {{a,b}, {c,d}, {e,i}}
Run Code Online (Sandbox Code Playgroud)

作为简写

f @@#& /@ {{a,b} {c,d}, {e,i}}
Run Code Online (Sandbox Code Playgroud)

换句话说,采用一个纯函数(简写:) ...#...&来做一个Apply(简写:) @@到一个参数列表,和Map(简写:) /@这样的参数列表.结果是

{f[a,b], f[c,d], f[e,i]}
Run Code Online (Sandbox Code Playgroud)


tva*_*son 11

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

f @@@ {{a, b, c}, {d, e}}
Run Code Online (Sandbox Code Playgroud)

相当于

Apply[f, {{a, b, c}, {d, e}}, {1}]
Run Code Online (Sandbox Code Playgroud)

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

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


Tim*_*ter 8

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

documents.wolfram.com