Python ist so flexibel, dass ich Funktionen als Elemente von Listen oder Argumenten anderer Funktionen verwenden kann. Zum Beispiel:
%Vor%oder
%Vor% Es ist mir jedoch nicht klar, wie ich das gleiche mit zufälligen Funktionen machen soll. Zum Beispiel möchte ich Gaußsche Verteilungen verwenden: [random.normalvariate(3.0, 2.0), random.normalvariate(1.0, 4.0)]
. In diesem Beispiel erhalte ich eine feste Liste mit zwei Elementen. Aber was ich bekommen möchte, ist eine Liste mit zufälligen Elementen. Was ist ein guter Weg, um es in Python zu tun?
Probieren Sie es mit lambda
Funktionen:
Sie sehen den Unterschied in Klammern. sin
ist eine Funktion, sin(x)
ist der Rückgabewert dieser Funktion. Da Sie keine Funktion ohne Klammern erstellen können, die random.normalvariate(1.0, 4.0)
darstellen, müssen Sie sie als Lambda-Funktion definieren.
Verwenden Sie functools.partial oder lambda
Das sind im Grunde die gleichen:
%Vor%Sie sind beide äquivalent zu:
%Vor% partial
ist flexibler, gibt Ihnen eine viel bessere Kontrolle über die Erstellung von _function
und lässt Sie Lambda-Syntax-Unordnung vermeiden.
Es gab übrigens einige Kontroversen über Lambda in der Python-Community, aber am Ende gab Guido zu, dass Eine überlegene Alternative zum Lambda-Ausdruck zu finden, ist" eine unmögliche Aufgabe ".