lambda也是python支持的一种定义函数的方法,python中lambda的作用
1.lambda是什么?Lambda表达式出现在许多语言中,lambda是Java8中的一个新特性,如下所示:
//接收一个参数并返回其平方数x-x * x //接受2个参数并返回其乘积(x,y)-x * y Python中的lambda表达式如下:
F=lambda x: x**2 #数字功率打印(f(5))x=lambda x:x . split()#字符拆分打印(x(x ss vv bbn l ))从上面我们可以发现lambda表达式的一个重要特征:简洁性。,这是使用它的重要原因。
Lambda表达式通常称为lambda函数和匿名函数。其实是函数的简化版。简化到什么程度?连函数名都简化了没有。。
用Python定义lambda表达式:f = lambda x: x**2
冒号左边的参数(这里是X)是函数的参数列表,它可以有一个或多个参数。
冒号右边相当于return [表达式]。(注意:冒号右边的表达式不能太复杂,否则会与其简单性背道而驰。如果真的需要复杂的逻辑,建议使用函数)
F是这个函数的引用或者句柄,有的朋友可能会说“F不是函数的名字吗?”不对。这时F就是这个匿名函数的函数名,因为f(5)是函数的调用方法。
所以这个lambda函数等价于下面的函数:
Def f(x):返回x**2 * * 2即使在执行效率上二者都相差无几,读者也可以自行测试或者查阅其他资料。
2.lambda表达式作为函数的参数。下面是列表的排序方法,一个匿名的lambda函数被传递给参数key:
l=[(2,9),(4,6),(5,3)]l . sort(key=lambda x:x[1])print(l)#[(5,3),(4,6),(2,9)]l . sort(key=lambda x:x[0])print(l)#[(2,9),(4,6),(5,3)]这个lambda函数告诉sort函数使用列表项中的哪个参数作为排序依据,因为我们在开发中遇到的排序元素很可能比这个复杂得多,比如
L=[{ 姓名:韩梅梅,年龄:18,书:{ 姓名:探索自然,价格:37.9}},{ 姓名:李雷,年龄:17,书:{ 姓名:肖鑫,年龄:19,书:{ 姓名:高等数学,价格:45.5}}] L.sort (key=lambda x: x [姓名]) #按姓名排序print (l) #年龄:18,书:{ 姓名:探索自然,价格:38 book: {name :高等数学, price: 45.5}}]L . Sort(key=lambda x:x[ Book ][ price ])# Print(L)#[{ Book: {name :国家地理, price: 30.0}},# {name :韩梅梅,年龄:18, book: {name :探索自然, price: 37.9}}年龄:19, Book :{ name :高等数学, price :45.5 } }]
最后,我们实现一个冒泡排序函数,将lambda函数作为参数:
L=[{ 姓名:韩梅梅,年龄:18,书:{ 姓名:探索自然,价格:37.9}},{ 姓名:李雷,年龄:17,书:{ 姓名:肖鑫,年龄:19,书:{ 姓名:高等数学,价格:45.5}}] def my _ sort (data _ list,key=lambda x:x):for I in range(len(data _ list)):for k in range(len(data _ list)-I-1):if # { 姓名:韩梅梅,年龄:18,书籍:{ 姓名:探索自然,价格:37.9}}年龄:19,书籍:{ 姓名:高等数学,价格:45.5}}]还可以实现Python内置函数sort的排序效果。
~结束~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。