で Python 2.6 möchte ich tun:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
Das ist eindeutig nicht die Syntax. Ist es möglich, eine if
en lambda
und wenn ja, wie kann man das tun?
で Python 2.6 möchte ich tun:
f = lambda x: if x==2 print x else raise Exception()
f(2) #should print "2"
f(3) #should throw an exception
Das ist eindeutig nicht die Syntax. Ist es möglich, eine if
en lambda
und wenn ja, wie kann man das tun?
Eine einfache Möglichkeit, ein if in Lambda auszuführen, ist die Verwendung des Listenverständnisses.
Sie können keine Ausnahme in Lambda auslösen, aber dies ist eine Möglichkeit in Python 3.x, um etwas Ähnliches wie Ihr Beispiel zu tun:
f = lambda x: print(x) if x==2 else print("exception")
Ein weiteres Beispiel:
Rückgabe 1 wenn M sonst 0
f = lambda x: 1 if x=="M" else 0
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
3 Stimmen
In einem Lambda kann man nicht drucken oder erhöhen. Lambdas sind nur Funktionen, Sie können stattdessen immer eine Funktion verwenden.
11 Stimmen
Ich bin anderer Meinung als Sie. Ich brauche 4 verschiedene, sehr kurze Funktionen wie die oben genannten, die in eine Liste/Wörterbuch gesetzt werden müssen, so dass ich über sie iterieren kann und auswählen, welche in jeder Iteration zu verwenden. Anstelle von vielen Zeilen Code von nur inits, vor der Iteration, selbst kann ich es auf nur 4 Zeilen von Init-Code zu bringen. Je weniger, desto besser
6 Stimmen
4 Zeilen Code sind keine lobenswerte Lösung, wenn andere Leute den Code lesen, interpretieren, verstehen und pflegen müssen. Außerdem zeigt das "print/raise"-Problem in dem Beispiel, dass dies in Lambdas nicht möglich ist und auch nicht sein sollte.
0 Stimmen
@LennartRegebro lambdas sind keine Funktionen in Python, sie sind nur Ausdrücke, deshalb gibt es viele Dinge, die man nicht mit ihnen machen kann.
3 Stimmen
@AaronMcMillin Lambdas sind Funktionen. Sie sind aus Gründen der Syntax auf Ausdrücke beschränkt, aber sie SIND Funktionen.
0 Stimmen
Ich denke, der wichtigste Punkt ist, dass Lambdas nicht wie Funktionen im Speicher gehalten werden, sie sind generische Funktionen, die ausgewertet und verworfen werden. Wenn Sie Funktionen in einer Schleife durchlaufen wollen, benötigen Sie eine dauerhaftere Struktur wie ein Ereignis.