将列表应用于 Mathematica 中的参数
我将如何将列表中的每个元素应用于函数中的每个参数?有点像 Map
,只不过参数数量可变。
例如,如果我有一个函数 action[x1_,x2_,x3_]:=...
,并且我有一个列表 {1,2,3}
,如何创建一个函数来使用 action[1,2,3]
调用 action
?
我希望这个函数能够处理我将 action
更改为 action[x1_,x2]
以及其他任何内容,列表现在为 {1 ,2}
,并立即使用 action[1,2]
调用操作。
How would I go about applying each element in a list to each argument in a function? Kind of like Map
, except with a variable number of arguments.
So for example, if I have a function action[x1_,x2_,x3_]:=...
, and I have a list {1,2,3}
, how would I create a function to call action
with action[1,2,3]
?
I would like this function be able to handle me changing action
to action[x1_,x2]
, and anything else, also, with the list now being {1,2}
, and to call action now with action[1,2]
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
基于“有点像 Map,除了参数数量可变”。我想您可能正在寻找
Apply
to level 1。这是通过以下方式完成的:或简写:
这就是它的作用:
我上面使用的术语可能会产生误导,并限制了
应用
。您应用action
的表达式不需要是矩形数组。它甚至不需要是List
:{...}
或其元素是列表。下面是一个包含这些可能性的示例:args
不是一个List
,而是一组Alternatives
,action<的参数数量/code> 改变
args
的一个元素有头f
观察到:
action
替换了args< 的每个元素的头/code>,无论它是什么。
args
的头部保留在输出中,在本例中为Alternatives
(缩写形式:a | b | c
)Based on "Kind of like Map, except with a variable number of arguments." I think you might be looking for
Apply
to level 1. This is done with:or the shorthand:
Here is what it does:
The terminology I used above could be misleading, and limits the power of
Apply
. The expression to which you applyaction
does not need to be a rectangular array. It does not even need to be aList
:{...}
or have its elements be lists. Here is an example incorporating these possibilities:args
is not aList
but a set ofAlternatives
action
variesargs
has headf
Observe that:
action
replaces the head of each element ofargs
, whatever it may be.args
is preserved in the output, in this caseAlternatives
(short form:a | b | c
)这也可以输入为
action @@ {1,2,3}
。This also can be entered as
action @@ {1,2,3}
.为什么不直接使用action[lst_?ListQ]?
Why not just use action[lst_?ListQ]?