https://qiita.com/ganariya/items/fb3f38c2f4a35d1ee2e8
Afin d'étudier Python, j'ai copié une bibliothèque d'intelligence de groupe appelée acopy.
Dans acopy, de nombreuses grammaires et idiomes Python intéressants sont utilisés, et il est résumé que c'est utile parmi eux.
Cette fois, nous allons découvrir les expressions lambda Python.
L'expression Lambda est un concept utilisé dans de nombreux autres langages de programmation et signifie ** fonction anonyme **. Il n'est pas nécessaire de donner un nom, ** lorsque la portée à utiliser est très petite **, ** une fonction anonyme est définie sur place et ignorée ** est une expression lambda.
En C ++, il peut être utilisé avec la notation []() {}
.
L'expression lambda est exprimée sous la forme de «argument lambda: traitement». La caractéristique est qu'une valeur est toujours renvoyée à la suite du traitement.
Par exemple, créons une fonction add qui ajoute les arguments de deux entiers, et une fonction lm_add qui l'exprime comme lambda.
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))
La fonction lm_add se comporte de la même manière que la fonction add. Après avoir reçu les arguments $ x et y $ et calculé $ x + y $, il est renvoyé de force.
Vous pouvez utiliser des arguments de longueur variable comme vous le feriez pour une fonction normale.
f = lambda *args, **kwargs: print(args, kwargs)
'''
(10, 'a') {'hello': 'world'}
'''
f(10, 'a', hello='world')
L'expression lambda est essentiellement utilisée uniquement dans une très petite portée (je pense qu'elle devrait l'être), qui est jetable et n'a pas besoin d'être nommée.
Par exemple
Il est souvent utilisé en combinaison avec des fonctions intégrées telles que. Particulièrement utilisé dans la programmation compétitive.
Par exemple, ce qui suit trie le tableau de taples dans l'ordre croissant par rapport à l'élément $ 1 $, et s'ils sont identiques, les trie encore par ordre croissant par l'élément $ 0 $.
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)
Puisqu'il n'est pas nécessaire de définir la fonction de comparaison ci-dessus en dehors de la portée, et parce que la position de la fonction devient éloignée et que la charge de suivre le processus est réduite, il semble préférable de la définir avec lambda.
J'ai regardé lambda. Surtout lors de la programmation de compétition avec Python. Je voudrais également utiliser l'expression lambda dans d'autres langues.
Tri avec des éléments $ 2 $ en Python (tri C ++, etc.) N'y a-t-il pas d'autre choix que de définir ʻeq, lt` dans la classe ... (j'espère que cela peut être fait avec lambda)