map
und filter
sind oft austauschbar mit Listenkompressen, aber reduce
ist nicht so leicht austauschbar wie map
und filter
(und außerdem bevorzuge ich in einigen Fällen immer noch die funktionale Syntax). Wenn Sie jedoch an den Argumenten selbst arbeiten müssen, gehe ich durch syntaktische Gymnastik und muss schließlich ganze Funktionen schreiben, um die Lesbarkeit zu erhalten.Können Sie eine Operation direkt auf Argumente in map/reduce/filter anwenden?
Ich werde map
verwenden, um den Illustrationseinheitstest einfach zu halten, aber bedenken Sie bitte, dass reale Anwendungsfälle schwerer als Listenverständnis auszudrücken sind.
Ich habe zwei chaotische Wege gefunden, um darüber zu gehen, aber nichts, was ich jemals tatsächlich verwenden würde.
[afunc(*i) for i in aniter] == map(afunc, *zip(*aniter))
[afunc(*i) for i in aniter] == map(lambda i: apply(afunc, i), aniter)
Gibt es einen markigen, eleganten Weg, die rechte Seite dieser Ausdrücke auszudrücken?
Schön, ich benutze IterTools die ganze Zeit, aber aus irgendeinem Grund ist es mir nicht eingefallen, dafür zu suchen. – kojiro
+1 für die ausgezeichneten Rezepte Link! Das habe ich nie bemerkt – Kos