Ich finde oft, dass ich Vorkommen mit Tally[ ]
zähle und dann, wenn ich die ursprüngliche Liste verworfen habe, die Ergebnisse einer anderen Liste hinzufügen (und beitreten) muss.
Dies passiert normalerweise, wenn ich Konfigurationen, Vorkommen zähle, diskrete Statistiken mache usw.
Also habe ich eine sehr einfache, aber praktische Funktion für die Tally-Aggregation definiert:
%Vor%So dass
%Vor%Diese Funktion hat zwei Probleme:
1) Leistung
%Vor%2) Es bestätigt nicht, dass das letzte Argument eine echte Tallied-Liste oder null ist (weniger wichtig für mich)
Gibt es eine einfache, elegante, schnellere und effektivere Lösung? (Ich verstehe, dass dies zu viele Anforderungen sind, aber Wunsch ist frei)
Vielleicht wird dies Ihren Bedürfnissen entsprechen?
%Vor%Die Zeiten sind viel besser und es gibt eine musterbasierte Überprüfung des letzten Arguments.
BEARBEITEN:
Hier ist eine schnellere Version:
%Vor%Die Zeiten dafür:
%Vor% Hier ist das Schnellste, was ich bisher herausgefunden habe: (ab) Verwenden des Tags, das mit Sow
und Reap
verfügbar ist:
Ich werde keine Schönheitswettbewerbe gewinnen, aber es geht nur um Geschwindigkeit, oder? =)
Wenn du rein symbolisch bleibst, kannst du etwas nach dem Motto
probieren %Vor%zum Hinzufügen von Listen. Das ist blöd schnell, gibt aber etwas zurück, das keine Tally-Liste ist, also braucht es etwas Arbeit (danach ist es vielleicht nicht mehr so schnell;)).
EDIT: Also ich habe eine funktionierende Version:
%Vor%Mit ein paar zufälligen symbolischen Tabellen bekomme ich
%Vor%Diese Version fügt nur Tally-Listen hinzu, prüft nichts, gibt noch einige Ganzzahlen zurück und vergleicht sie mit Leonids Funktion:
%Vor%es ist schon ein paar Sekunden langsamer: - (.
Oh, gut, versuchen Sie es.
Tags und Links wolfram-mathematica