Liste auf Argumente in Mathematica anwenden

8

Wie würde ich jedes Element in einer Liste auf jedes Argument in einer Funktion anwenden? Ein bisschen wie Map , außer mit einer variablen Anzahl von Argumenten.

Wenn ich zum Beispiel eine Funktion action[x1_,x2_,x3_]:=... habe und eine Liste {1,2,3} , wie würde ich eine Funktion erstellen, um action mit action[1,2,3] ?

aufzurufen

Ich möchte, dass diese Funktion mit mir umgehen kann, indem ich action zu action[x1_,x2] und noch etwas anderes ändere, wobei die Liste jetzt {1,2} ist und jetzt Aktion mit action[1,2] aufruft.

    
wrongusername 21.04.2011, 16:02
quelle

3 Antworten

10

Basierend auf "Art der gleichen Map, außer mit einer variablen Anzahl von Argumenten." Ich denke, Sie suchen vielleicht nach Apply bis Level 1. Dies geschieht mit:

%Vor%

oder die Kurzschrift:

%Vor%

Hier ist was es tut:

%Vor% %Vor%

Die oben verwendete Terminologie kann irreführend sein und begrenzt die Leistung von Apply . Der Ausdruck, auf den Sie action anwenden, muss kein rechteckiges Array sein. Es muss nicht einmal ein List : {...} sein oder seine Elemente müssen Listen sein. Hier ein Beispiel mit diesen Möglichkeiten:

%Vor% %Vor%
  • args ist kein List , aber eine Menge von Alternatives
  • Die Anzahl der an action übergebenen Argumente variiert
  • eines der Elemente von args hat head f

Beachten Sie Folgendes:

  • action ersetzt den Kopf jedes Elements von args , was auch immer es sein mag.
  • Der Kopf von args wird in der Ausgabe beibehalten, in diesem Fall Alternatives (Kurzform: a | b | c )
Mr.Wizard 21.04.2011, 16:25
quelle
8
%Vor%

Dies kann auch als action @@ {1,2,3} eingegeben werden.

    
Sasha 21.04.2011 16:04
quelle
-2

Warum nicht einfach die Aktion [lst_? ListQ] verwenden?

    
dwa 22.04.2011 01:17
quelle

Tags und Links