我看到了一些使用内置函数的例子,如sorted
,sum
等。使用key=lambda
。lambda
是什么意思它是如何工作的?
关于lambda的一般计算机科学概念,参见What is a lambda (function)?。
另请参阅How are lambdas useful?,了解一些不再符合站点标准但您可能会发现有用的讨论。
我看到了一些使用内置函数的例子,如sorted
,sum
等。使用key=lambda
。lambda
是什么意思它是如何工作的?
关于lambda的一般计算机科学概念,参见What is a lambda (function)?。
另请参阅How are lambdas useful?,了解一些不再符合站点标准但您可能会发现有用的讨论。
4条答案
按热度按时间3phpmpom1#
lambda
是一个匿名函数:它经常用于像
sorted()
这样的函数中,这些函数将可调用对象作为参数(通常是key
关键字参数)。你可以提供一个现有的函数,而不是lambda
,只要它是一个可调用的对象。以
sorted()
函数为例。它将按排序顺序返回给定的iterable:但它会将大写的单词排在小写的单词之前。使用
key
关键字,您可以更改每个条目,以便其排序不同。我们可以在排序之前将所有单词小写,例如:我们必须为此创建一个单独的函数,我们不能将
def lowercased()
行内联到sorted()
表达式中:另一方面,
lambda
可以直接在sorted()
表达式中内联指定:Lambda仅限于一个表达式,其结果是返回值。
在Python库中有很多地方,包括内置函数,它们将可调用作为关键字或位置参数。这里有太多的名字,他们经常扮演不同的角色。
oknwwptz2#
在Python中,
lambda
是一个关键字,用于定义 * 匿名函数 *(i.即没有名字的函数),有时称为 *lambda函数 *(在关键字之后,该关键字又是from theory)。让我们看一些例子:
现在让我们看看在
sorted
上下文中如何工作。假设我们有一个这样的列表,其中混合了整数和数字内容的字符串:
并且我们希望根据它们代表的数字对值进行排序 *:因此,结果应该是
['-10', '-1', 1, '2', 3, 4, '5', '8']
。如果我们尝试使用
sorted
进行排序,我们会得到错误的结果:然而,通过对
sorted
使用key
,我们可以根据对每个值应用key
函数的结果对值进行排序:由于
lambda
创建了一个 callable(具体地说,是一个函数),我们可以为key
使用一个:bprjcwpo3#
Lambda可以是任何函数。所以如果你有一个函数
你可以像这样对Person列表进行排序(每个Person都有一个age属性):
这样,列表将按年龄升序排序。
示例中包含了“lambda”,因为Python有一个漂亮的lambda关键字,用于动态定义此类函数。除了定义一个函数compare_person并将其传递给sorted,你还可以这样写:
也是一样的
3hvapo4f4#
实际上,上面的代码可以是:
根据https://docs。python.org/2/library/functions.html?highlight=sorted#sorted,key指定一个参数的函数,用于从每个列表元素中提取比较键:key=str.lower.默认值为None(直接比较元素)。