
[英]Access & Select specific sub-list elements with a Pure Function
[英]Input list to a pure function
纯函数的语法类似于(1+#1+#2)&[a,b]
,它给出1+a+b
。 现在我想提供一些看起来像{a,b}
的函数的输出到上面的函数,即类似于(1+#1+#2)&{a,b}
,但语法正确,如这显然不起作用。 我该怎么做呢?
最简单的方法是使用Apply
( @@
):
In[4]:= (1 + #1 + #2) & @@ {a, b}
Out[4]= 1 + a + b
要提供一些替代方法,如果更方便的话,还可以在函数中包含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
这是一个普通函数的版本(即可以使用方括号),它将采用任意列表。 Apply
已在函数内移动, ##
表示SlotSequence
(模式匹配中的cf _
和__
)
In[1]:= (1 + ##&@@ #) &[{a, b}]
(1 + ##&@@ #) &[{a, b, c, d, e}]
Out[1]= 1 + a + b
Out[2]= 1 + a + b + c + d + e
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.