python : reduzieren können übersetzt werden in die Liste Verstehens wie map, lambda-und filter?

Bei der Programmierung in python, die ich jetzt vermeiden map, lambda und filter durch die Liste Verstehens, weil es einfacher zu Lesen und schneller in der Ausführung. Aber kann reduce ersetzt werden, wie gut?

E. g. ein Objekt hat ein Betreiber union() funktioniert auf einem anderen Objekt, a1.union(a2), und gibt ein 3. Objekt von gleichen Typ.

Habe ich eine Liste von Objekten:

L = [a1, a2, a3, ...]

Wie die union () - all diese Objekte mit Liste Verstehens, das entspricht:

result = reduce(lambda a, b :a.union(b), L[1:], L[0])
  • In manchen Fällen: keine. Aber hängt. Bitte geben Sie eine spezifische Abfrage, die Sie im Sinn haben
  • Beispiele dafür?
  • Setzen die Gewerkschaften sind ein schlechtes Beispiel, denn Sie können einfach tun result = set().union(*L), das hat den Vorteil, dass die Arbeit, auch wenn L wird eine leere Liste. Jedenfalls lambda a, b :a.union(b) geschrieben werden kann prägnanter als set.union, da in python obj.method(args) ist das gleiche wie cls.method(obj, args)
  • Guido sagt, um eine for-Schleife verwenden anstelle von reduzieren. Er ist kein fan von FP-Konstrukte.
InformationsquelleAutor Eric H. | 2014-06-25
Schreibe einen Kommentar