将列表应用于 Mathematica 中的参数

发布于 2024-11-02 10:54:25 字数 361 浏览 1 评论 0原文

我将如何将列表中的每个元素应用于函数中的每个参数?有点像 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

心不设防 2024-11-09 10:54:25

基于“有点像 Map,除了参数数量可变”。我想您可能正在寻找Apply to level 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]}  

我上面使用的术语可能会产生误导,并限制了应用。您应用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<的参数数量/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:

Apply[function, array, {1}]

or the shorthand:

function @@@ array

Here is what it does:

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

action @@@ array
   {action[1, 2, 3], action[a, b, c], action[Pi, Sin, Tan]}  

The terminology I used above could be misleading, and limits the power of Apply. The expression to which you apply action does not need to be a rectangular array. It does not even need to be a List: {...} or have its elements be lists. Here is an example incorporating these possibilities:

args = {1, 2} | f[a, b, c] | {Pi};

action @@@ args
   action[1, 2] | action[a, b, c] | action[Pi] 
  • args is not a List but a set of Alternatives
  • the number of arguments passed to action varies
  • one of the elements of args has head f

Observe that:

  • action replaces the head of each element of args, whatever it may be.
  • The head of args is preserved in the output, in this case Alternatives (short form: a | b | c)
生生漫 2024-11-09 10:54:25
Apply[action, {1,2,3}]

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

Apply[action, {1,2,3}]

This also can be entered as action @@ {1,2,3}.

垂暮老矣 2024-11-09 10:54:25

为什么不直接使用action[lst_?ListQ]?

Why not just use action[lst_?ListQ]?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文