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