Wolfram mathematica 纯函数的输入列表

Wolfram mathematica 纯函数的输入列表,wolfram-mathematica,Wolfram Mathematica,纯函数的语法类似于(1+#1+#2)和[a,b],它给出了1+a+b。现在我想把一些函数的输出,看起来像{a,b},提供给上面的函数,也就是说,像(1+#1+#2)和{a,b},但是语法正确,因为这显然不起作用。如何进行此操作?最简单的方法是使用Apply(@): 要提供一些备选方案,如果方便的话,还可以在函数中包含Apply: f = (1 + # + #2) & @@ # &; f @ {a, b} 最后,您可能已经知道这一点,但对于阅读此问题的其他人: g[{x_, y

纯函数的语法类似于
(1+#1+#2)和[a,b]
,它给出了
1+a+b
。现在我想把一些函数的输出,看起来像
{a,b}
,提供给上面的函数,也就是说,像
(1+#1+#2)和{a,b}
,但是语法正确,因为这显然不起作用。如何进行此操作?

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


要提供一些备选方案,如果方便的话,还可以在函数中包含
Apply

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

f @ {a, b}
最后,您可能已经知道这一点,但对于阅读此问题的其他人:

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

g @ {a, b}

1+a+b这里有一个版本,它是一个普通函数(即可以使用方括号),可以接受任意列表。
应用
已在函数内部移动,
##
表示
时隙序列
(模式匹配中的c.f.


有趣的是,纯函数将接受无穷多的参数,而
函数中变量的数量
#n
中的最大n给出了所需的最小参数数量。但是,
##n
没有规定任何这样的最低要求。@rcollyer你确定吗?试试:
{##4}&@@@Array[Range,5]
@Mr,odd。因为我上周用它做了一些实验,似乎表明它是有效的。回到绘图板。另一种选择是
(1+##)和@@{a,b}
,它可以处理列表的任意长度。的可能重复项 1 + a + b
f = (1 + #[[1]] + #[[2]]) &;
g[{x_, y_}] := 1 + x + y

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

Out[1]= 1 + a + b

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