如何将列表中的每个元素应用到函数中的每个参数?有点像Map
,除了可变数量的参数。
例如,如果我有一个函数action[x1_,x2_,x3_]:=...
,并且我有一个列表{1,2,3}
,我将如何创建一个函数来调用带有action
的{{1}}?< / p>
我希望此功能能够处理我将action[1,2,3]
更改为action
以及其他任何内容,现在列表为action[x1_,x2]
,并立即使用{调用操作{1}}。
答案 0 :(得分:11)
基于“类似地图的种类,除了可变数量的参数”。我认为您可能正在寻找Apply
级别1.这可以通过以下方式完成:
Apply[function, array, {1}]
或简写:
function @@@ array
这是它的作用:
array = {{1, 2, 3}, {a, b, c}, {Pi, Sin, Tan}};
action @@@ array
{action[1, 2, 3], action[a, b, c], action[Pi, Sin, Tan]}
我上面使用的术语可能会产生误导,限制Apply
的力量。您应用action
的表达式不需要是矩形数组。它甚至不需要是List
:{...}
或其元素是列表。以下是包含这些可能性的示例:
args = {1, 2} | f[a, b, c] | {Pi};
action @@@ args
action[1, 2] | action[a, b, c] | action[Pi]
args
不是List
,而是一组Alternatives
action
的参数数量各不相同args
的其中一个元素有f
观察:
action
取代args
的每个元素的头部,无论它是什么。args
的头部保留在输出中,在本例中为Alternatives
(简称:a | b | c
)答案 1 :(得分:8)
Apply[action, {1,2,3}]
也可以输入action @@ {1,2,3}
。
答案 2 :(得分:-2)
为什么不使用行动[lst_?ListQ]?