Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python lambda函数如何有用?_Python_Python 3.x_Function_Lambda - Fatal编程技术网

Python lambda函数如何有用?

Python lambda函数如何有用?,python,python-3.x,function,lambda,Python,Python 3.x,Function,Lambda,目前我正在学习Python 3中的lambda函数。 到目前为止,我所知道的关于lambda函数的一切是,它是一个匿名函数,可以接受任意数量的参数,但只能包含一个表达式 所以我的问题是,如果我们可以用正规表达式做同样的事情,为什么我们需要lambda函数呢。我的意思是引入lambda函数的实际目的是什么?有时您需要一个非常简单的函数供一次性使用,例如作为参数传递给.sort(),告诉它如何进行排序。例如,如果要对第二个元素上的元组列表进行排序 list_of_tuples.sort(key=la

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


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

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

list_of_tuples.sort(key=lambda t: t[1])
与之相比,它非常简洁

def first_element(t):
    return t[1]

list_of_tuples(key=first_element)

仅此而已。

我很少使用随机函数,但我不喜欢引入一个命名函数,仅仅用作
排序中的
键。我更喜欢

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


没有lambda函数这样的东西。lambda表达式是创建
函数
对象的一种方法。Python 3几乎没有lambda表达式。像
operator.itemgetter
这样的东西是作为主要用例的替代品,正如您所注意到的,没有什么可以用lambda表达式定义,而不能用
def
语句定义。但最终,他们被保留了下来。
def sort_by(x):
    return x[1]

srt = sorted(lst, key=sort_by)