168 votes

Syntaxe derrière trié (clé = lambda :)

Je ne comprends pas bien la syntaxe derrière l'argument sorted() :

 key=lambda variable: variable[0]
 

lambda n'est-il pas arbitraire? Pourquoi variable indiqué deux fois dans ce qui ressemble à dict ?

183voto

Evan Points 3138

key est une fonction qui sera appelée à transformer la collecte des éléments avant leur comparaison. Le paramètre passé à l' key doit être quelque chose qui est remboursable.

L'utilisation de l' lambda crée une fonction anonyme (ce qui est exigible). Dans le cas d' sorted remboursables ne prend qu'un seul paramètre. Python lambda est assez simple. Il ne peut le faire et de le retourner chose vraiment.

La syntaxe de l' lambda est le mot lambda , suivie par la liste des noms des paramètres, puis d'un seul bloc de code. La liste des paramètres et blocs de code sont délimitées par deux points. Ceci est similaire à d'autres constructions en python, telles que l' while, for, if et ainsi de suite. Ils sont tous les états qui ont généralement un bloc de code. Lambda est juste un autre exemple d'une déclaration avec un bloc de code.

Nous pouvons comparer l'utilisation de lambda que de la def pour créer une fonction.

adder_lambda = lambda parameter1,parameter2: parameter1+parameter2
def adder_regular(parameter1, parameter2): return parameter1+parameter2

lambda nous donne juste une façon de le faire sans l'affectation d'un nom. Ce qui le rend idéal pour l'utilisation en tant que paramètre à une fonction.

variable est utilisé à deux reprises ici car sur la main gauche du colon, c'est le nom d'un paramètre et sur le côté droit, il est utilisé dans le bloc de code pour calculer quelque chose.

29voto

lambda est un mot clé Python utilisé pour générer des fonctions anonymes .

 >>> (lambda x: x+2)(3)
5
 

12voto

sblom Points 15074

Le variable restant du : est un nom de paramètre. L'utilisation de variable à droite utilise le paramètre.

Signifie presque exactement la même chose que:

 def some_method(variable):
  return variable[0]
 

3voto

Makoto Points 23751

lambda est une fonction anonyme, pas une fonction arbitraire. Le paramètre accepté sera la variable avec laquelle vous travaillez et la colonne dans laquelle vous le triez.

2voto

Kristof Pal Points 220

Puisque l'utilisation de lambda a été posée dans le contexte de sorted() , jetez également un coup d'oeil à cette question https://wiki.python.org/moin/HowTo/Sorting/#Key_Functions

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X