什么是key = lambda

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

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

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

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

回答:

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

以上是 什么是key = lambda 的全部内容, 来源链接: utcz.com/qa/433168.html

回到顶部