Wolfram mathematica 将列表应用于Mathematica中的参数
如何将列表中的每个元素应用于函数中的每个参数?有点像Wolfram mathematica 将列表应用于Mathematica中的参数,wolfram-mathematica,Wolfram Mathematica,如何将列表中的每个元素应用于函数中的每个参数?有点像映射,只是参数数量可变 例如,如果我有一个函数action[x1,x2,x3]:=…,我有一个列表{1,2,3},我如何创建一个函数来调用action,使用action[1,2,3] 我希望这个函数能够处理我将action更改为action[x1,x2],以及其他任何事情,同时,列表现在是{1,2},并使用action[1,2]调用action now Apply[action, {1,2,3}] 这也可以输入为action@@@1,2,3}
映射
,只是参数数量可变
例如,如果我有一个函数action[x1,x2,x3]:=…
,我有一个列表{1,2,3}
,我如何创建一个函数来调用action
,使用action[1,2,3]
我希望这个函数能够处理我将action
更改为action[x1,x2]
,以及其他任何事情,同时,列表现在是{1,2}
,并使用action[1,2]
调用action now
Apply[action, {1,2,3}]
这也可以输入为action@@@1,2,3}
基于“类似的映射,除了具有可变数量的参数。”我想您可能正在寻找应用于级别1。这是通过以下方式完成的:
Apply[function, array, {1}]
或速记:
function @@@ array
它的作用如下:
array = {{1, 2, 3}, {a, b, c}, {Pi, Sin, Tan}};
action @@@ array
动作[1,2]|动作[a,b,c]|动作[Pi]
args
不是一个列表
,而是一组备选方案
- 传递给
action
的参数数量各不相同
args
的一个元素具有头f
注意:
action
替换args
的每个元素的头部,不管它是什么
args
的头部保留在输出中,在本例中为Alternatives
(缩写:a | b | c
)
为什么不直接使用action[lst_?ListQ]?您的解决方案与Sasha的有什么区别?我的意思是,我在你的书中看到了@@@
,而在他的书中只看到了@
。它们怎么可能是一样的?@d'o-o'b它们不一样,但它们用于相同的功能:Apply
f@@@1,2,3}
给出了f[1,2,3]
实际上是在“0级”(即{1,2,3}
的顶层)将列表
替换为f
)。相比之下,f@@@f{1}、{2}、{3}
给出了{f[1]、f[2]、f[3]},将列表的每个元素或“级别1”的f
替换为f
。也可以使用Apply[f,expression,levelspec]
对表达式的更深层次执行此操作,但没有速记(如
或@
)为了这个。有关levelspec的详细信息,请参阅级别的帮助。这是您要回答的问题吗?
{action[1, 2, 3], action[a, b, c], action[Pi, Sin, Tan]}
args = {1, 2} | f[a, b, c] | {Pi};
action @@@ args
action[1, 2] | action[a, b, c] | action[Pi]