将列表应用于Mathematica中的参数

wro*_*ame 9 wolfram-mathematica

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

因此,举例来说,如果我有一个功能action[x1_,x2_,x3_]:=...,我有一个名单{1,2,3},我将如何创建一个函数调用actionaction[1,2,3]

我希望这个函数能够处理我现在更改actionaction[x1_,x2],以及其他任何内容{1,2},以及现在调用操作action[1,2].

Mr.*_*ard 11

基于"类似地图的种类,除了可变数量的参数".我想你可能正在寻找Apply1级.这是通过以下方式完成的:

Apply[function, array, {1}]
Run Code Online (Sandbox Code Playgroud)

或速记:

function @@@ array
Run Code Online (Sandbox Code Playgroud)

这是它的作用:

array = {{1, 2, 3}, {a, b, c}, {Pi, Sin, Tan}};

action @@@ array
Run Code Online (Sandbox Code Playgroud)
   {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
Run Code Online (Sandbox Code Playgroud)
   action[1, 2] | action[a, b, c] | action[Pi] 
  • args不是一组List而是一组Alternatives
  • 传递的参数数量action各不相同
  • args有头的元素之一f

观察:

  • action取代每个元素的头部args,无论它是什么.
  • 的头部args在输出被保留,在此情况下Alternatives(简称:a | b | c)


Sas*_*sha 8

Apply[action, {1,2,3}]
Run Code Online (Sandbox Code Playgroud)

这也可以输入为action @@ {1,2,3}.