小编典典

什么是key = lambda

python

在使用一些内置函数(如sorted,sum)时,我注意到 key=lambda

什么是lambda?它是如何工作的?

还有哪些其他功能使用key = lambda?

还有其他关键值吗? key=?


阅读 2628

收藏
2020-12-20

共1个答案

小编典典

Alambda是一个匿名函数:

>>> f = lambda: 'foo'
>>> print f()
foo

它经常用在诸如以sorted()callable作为参数(通常是key关键字形参)的函数中。您可以提供一个现有的函数,而不是lambda那里的函数,只要它是一个可调用的对象即可。

sorted()功能为例。它将以排序顺序返回给定的iterable:

>>> sorted(['Some', 'words', 'sort', 'differently'])
['Some', 'differently', 'sort', 'words']

但这会将大写单词排在小写单词之前。使用key关键字,您可以更改每个条目,以便对其进行不同的排序。我们可以在排序之前将所有单词都小写,例如:

>>> def lowercased(word): return word.lower()
...
>>> lowercased('Some')
'some'
>>> sorted(['Some', 'words', 'sort', 'differently'], key=lowercased)
['differently', 'Some', 'sort', 'words']

为此,我们必须创建一个单独的函数,无法将def lowercased()行内联到sorted()表达式中:

>>> sorted(['Some', 'words', 'sort', 'differently'], key=def lowercased(word): return word.lower())
  File "<stdin>", line 1
    sorted(['Some', 'words', 'sort', 'differently'], key=def lowercased(word): return word.lower())
                                                           ^
SyntaxError: invalid syntax

lambda在另一方面,可以直接指定,内嵌在sorted()表达式:

 >>> sorted(['Some', 'words', 'sort', 'differently'], key=lambda word: word.lower())
['differently', 'Some', 'sort', 'words']

Lambda仅限于一个表达式,其结果是返回值。

Python库中有很多地方,包括内置函数,这些地方都带有可调用的关键字或位置参数。这里要说的太多了,它们通常扮演着不同的角色。

2020-12-20