将列表应用于Mathematica中的参数

时间:2011-04-21 16:02:36

标签: wolfram-mathematica

如何将列表中的每个元素应用到函数中的每个参数?有点像Map,除了可变数量的参数。

例如,如果我有一个函数action[x1_,x2_,x3_]:=...,并且我有一个列表{1,2,3},我将如何创建一个函数来调用带有action的{​​{1}}?< / p>

我希望此功能能够处理我将action[1,2,3]更改为action以及其他任何内容,现在列表为action[x1_,x2],并立即使用{调用操作{1}}。

3 个答案:

答案 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]?