输入列表到纯函数

时间:2011-04-05 22:05:22

标签: wolfram-mathematica

纯函数的语法类似于(1+#1+#2)&[a,b],它提供1+a+b。现在我想提供一些看起来像{a,b}的函数的输出到上面的函数,比如像(1+#1+#2)&{a,b},但是语法正确,因为这显然不起作用。我该怎么做呢?

3 个答案:

答案 0 :(得分:8)

最简单的方法是使用Apply@@):

In[4]:= (1 + #1 + #2) & @@ {a, b}

Out[4]= 1 + a + b

答案 1 :(得分:4)

要提供一些替代方案,如果更方便,您还可以在函数中包含Apply

f = (1 + # + #2) & @@ # &;

f @ {a, b}
1 + a + b

您可以选择手动索引零件:

f = (1 + #[[1]] + #[[2]]) &;

最后,您可能已经知道这一点,但对于其他人来说,这个问题是:

g[{x_, y_}] := 1 + x + y

g @ {a, b}
1 + a + b

答案 2 :(得分:3)

这是一个普通函数的版本(即可以使用方括号),它将采用任意列表。 Apply已在函数内移动,##表示SlotSequence(c.f。___模式匹配)

In[1]:= (1 + ##&@@ #) &[{a, b}]
        (1 + ##&@@ #) &[{a, b, c, d, e}]

Out[1]= 1 + a + b

Out[2]= 1 + a + b + c + d + e