https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8
Um Python zu studieren, habe ich eine Group Intelligence Library namens acopy kopiert.
In acopy werden viele interessante Python-Grammatiken und -Sprachen verwendet, und es wird zusammengefasst, dass es unter ihnen nützlich ist.
Dieses Mal lernen wir Python-Lambda-Ausdrücke kennen.
Der Lambda-Ausdruck ist ein Konzept, das in vielen anderen Programmiersprachen verwendet wird und ** anonyme Funktion ** bedeutet. Es ist nicht erforderlich, einen Namen anzugeben, ** wenn der zu verwendende Bereich sehr klein ist **, ** wird eine anonyme Funktion vor Ort definiert und verworfen ** ist ein Lambda-Ausdruck.
In C ++ kann es mit der Notation []() {}
verwendet werden.
Der Lambda-Ausdruck wird in Form des "Lambda-Arguments: Verarbeitung" ausgedrückt. Das Merkmal ist, dass ein Wert als Ergebnis der Verarbeitung immer zurückgegeben wird.
Erstellen wir beispielsweise eine Add-Funktion, die die Argumente zweier Ganzzahlen hinzufügt, und eine lm_add-Funktion, die sie als Lambda ausdrückt.
def add(x, y):
return x + y
lm_add = lambda x, y: x + y
x = 10
y = 40
'''
50
50
'''
print(add(x, y))
print(lm_add(x, y))
Die Funktion lm_add verhält sich genauso wie die Funktion add. Nachdem die Argumente $ x und y $ empfangen und $ x + y $ berechnet wurden, wird sie zwangsweise zurückgegeben.
Sie können Argumente variabler Länge wie eine reguläre Funktion verwenden.
f = lambda *args, **kwargs: print(args, kwargs)
'''
(10, 'a') {'hello': 'world'}
'''
f(10, 'a', hello='world')
Der Lambda-Ausdruck wird grundsätzlich nur in einem sehr kleinen Bereich verwendet (ich denke, das sollte sein), der verfügbar ist und nicht benannt werden muss.
Zum Beispiel
Es wird häufig in Kombination mit integrierten Funktionen wie verwendet. Besonders in der Wettbewerbsprogrammierung eingesetzt.
Im Folgenden wird beispielsweise das Array der Taples in aufsteigender Reihenfolge relativ zum $ 1 $ -Element sortiert. Wenn sie identisch sind, werden sie in aufsteigender Reihenfolge nach dem $ 0 $ -Element weiter sortiert.
tuples = [(10, -3), (4, 10), (-4, 13), (-20, -50), (-20, 1), (0, 0), (-22, -50)]
tuples = sorted(tuples, key=lambda x: (x[1], x[0]))
'''
[(-20, -50), (-22, -50), (10, -3), (0, 0), (-20, 1), (4, 10), (-4, 13)]
'''
print(tuples)
Da es nicht notwendig ist, die obige Vergleichsfunktion außerhalb des Geltungsbereichs zu definieren, und weil die Position der Funktion weit entfernt ist und die Last, dem Prozess zu folgen, verringert ist, scheint es besser, sie mit Lambda zu definieren.
Ich sah Lambda an. Besonders wenn Sie Wettbewerbsprogrammierung mit Python machen. Ich möchte den Lambda-Ausdruck auch in anderen Sprachen verwenden.
Sortieren mit $ 2 $ -Elementen in Python (C ++ - Sortieren usw.) Gibt es keine andere Wahl, als "eq, lt" in der Klasse zu definieren ... (Ich hoffe, es kann mit Lambda gemacht werden)
Recommended Posts