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]
.
Details. Flatten "unravels" lists, effectively just deleting inner braces. Flatten[list,n] effectively flattens the top level in list n times.
You can use Evaluate to override HoldFirst etc. attributes of built‐in functions. Evaluate only overrides HoldFirst etc. attributes when it appears directly as the head of the function argument that would otherwise be held. »
Module allows you to set up local variables with names that are local to the module. Module creates new symbols to represent each of its local variables every time it is called. Module creates a symbol with name xxx$nnn to represent a local variable with name xxx.
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
action
variesargs
has head f
Observe that:
action
replaces the head of each element of args
, whatever it may be.args
is preserved in the output, in this case Alternatives
(short form: a | b | c
)Apply[action, {1,2,3}]
This also can be entered as action @@ {1,2,3}
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With