lambda 函数有啥用? [复制]

Posted

技术标签:

【中文标题】lambda 函数有啥用? [复制]【英文标题】:How are lambda functions useful? [duplicate]lambda 函数有什么用? [复制] 【发布时间】:2019-08-13 12:30:36 【问题描述】:

目前我正在学习 Python 3 中的 lambda 函数。 到目前为止,我对 lambda 函数的了解是,它是一个匿名函数,可以接受任意数量的参数,但只能包含一个表达式。

所以我的问题是,如果我们可以使用普通表达式来做同样的事情,为什么我们需要lambda 函数。我的意思是引入lambda函数的实际目的是什么?

【问题讨论】:

***.com/questions/16501/… 没有像 lambda 函数这样的东西。 lambda 表达式 是创建function 对象的一种方法。 Python 3 几乎没有 lambda 表达式。 operator.itemgetter 之类的东西旨在替代主要用例,正如您所注意到的,您无法用 lambda 表达式定义任何东西,而您也无法用 def 语句定义。但最终,他们被保留了下来。 【参考方案1】:

有时您需要一个非常简单的函数来一次性使用,例如作为参数传递给.sort() 告诉它如何进行排序。例如。如果你想对第二个元素的元组列表进行排序,

list_of_tuples.sort(key=lambda t: t[1])

相比非常简洁
def first_element(t):
    return t[1]

list_of_tuples(key=first_element)

仅此而已。

【讨论】:

【参考方案2】:

我很少使用随机函数,但我不喜欢引入命名函数只是为了在sort 中用作key。我更喜欢

lst = (('s', 5), ('b', 2), ('h', 3))
srt = sorted(lst, key=lambda x: x[1])

def sort_by(x):
    return x[1]

srt = sorted(lst, key=sort_by)

【讨论】:

以上是关于lambda 函数有啥用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C 函数中的静态变量有啥用? [复制]

将“this”对象分配给函数内的变量有啥用? [复制]

dowhile(0) 有啥用? [复制]

用于计算百分位数的纯 python 实现:这里的 lambda 函数有啥用?

瞬态变量有啥用? [复制]

do ... while (0) — 它有啥用? [复制]