2017-03-31 13 views
2

Ich habe einige Probleme, scharfe Zeichen in Mathematica zu verstehen. Ich verstehe # & als Platzhalter für Variablen. Aber wie werden #1 und #2 im folgenden Code verstanden?Bedeutung der scharfen Zeichen in dieser Mathematica Split-Funktion

x = {0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1}; 
Split[x, #1 =!= 0 && #2 =!= 0 &] 

Was sind #1 und #2 hier? Der Ausgang dieser Leitungen ist

{{0}, {1, 1, 1}, {0}, {0}, {1, 1, 1}, {0}, {0}, {1}} 
+0

Schlitz zurückkehren würde, ist der Begriff https://reference.wolfram.com/language/ref/Slot.html – agentp

Antwort

3

Diese Version von Split der Form ist Split[list,test], wo test ist eine Funktion, die zwei Variablen nimmt. So

#1 =!= 0 && #2 =!= 0 & 

ist eine Abkürzung für eine zwei variable reine Funktion, wo #1 und #2 sind die Variablennamen.


Im Allgemeinen Split eine Liste nehmen und dieselbe Liste in aufeinanderfolgende Läufe von „identisch“ Elemente partitioniert zurückzukehren. Also, wenn Sie Ihre Liste list={0,0,2,2,3,4,4,5,5,5,7} ist, dann Split[list] ergibt

{{0,0}, {2,2}, {3}, {4,4}, {5,5,5}, {7}} 

Aber vielleicht wollen Sie definieren, was es bedeutet, für zwei Dinge „identisch“ anders zu sein. Das ist, wo die allgemeine Split[list,test] Funktion hereinkommt. Die test Funktion ist hier eine Funktion, die zwei Parameter nimmt und wahr zurückgibt, wenn sie identisch sind; Die test Funktion ist Ihre Test für ob oder zwei Dinge identisch sind. Zum Beispiel gibt die Testfunktion, die Sie gaben

Wahr zurück, wenn die beiden Elemente beide nicht null sind. So gruppiert Ihre Split Funktion Elemente, wenn es sich um eine Folge von Nullen handelt, oder wenn sie eine Folge von Nullen sind.

Für ein anderes Beispiel möchten Sie sagen, dass zwei ganze Zahlen identisch sind, wenn sie die gleiche Parität (gerade oder ungerade) haben. Dann würde Ihre Split-Funktion sein

Split[list, Mod[#1,2] == Mod[#2,2]] 

, die für die Liste I definiert

{{0,0,2,2}, {3}, {4,4}, {5,5,5,7}} 
+0

Dank zum Antworten. Das habe ich bis jetzt herausgefunden. Aber kannst du mir sagen, was genau die Variablen sind? Steht # 1 für das erste Element jeder aufgeteilten Liste und # 2 für das letzte Element? –