前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python的lambda表达式详细讲解

python的lambda表达式详细讲解

作者头像
全栈程序员站长
发布2022-11-02 10:41:57
1.3K0
发布2022-11-02 10:41:57
举报
文章被收录于专栏:全栈程序员必看

前言:

作者:神的孩子在歌唱 大家好,我叫智

Lambda 表达式是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象,是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。

  1. 而且Lambda表达式非常好用,可以让代码简单、简洁
请添加图片描述
请添加图片描述

图片来源:https://zhidao.baidu.com/question/527678293777168765.html?fr=iks&word=python%D6%D0%B5%C4lambada%B0%D9%B6%C8&ie=gbk&dyTabStr=MCw1LDEsNiw0LDMsNyw4LDIsOQ==

缺点:只有一个运算式,不适用于复杂的计算。不够直观,难于理解,增加了维护成本

python的lambda可以和java中的stream流一样,可以将lambda函数作为参数传递给其他函数比如说结合map、filter、sorted、reduce等一些Python内置函数使用

接下来我们用代码来演示一下lambda

(1)简单用法

代码语言:javascript
复制
# 求两数之和
sum = lambda a, b: a + b
print(sum(1,2))
请添加图片描述
请添加图片描述

(2)将lambda作为函数返回

代码语言:javascript
复制
# 作为函数
def sum(a):
    return lambda b:a + b
a = sum(3)
print(a(4))
请添加图片描述
请添加图片描述

解释:这里定义了一个sum函数,返回了一个lambda表达式。其中lambda表达式获取到了上层def作用域的变量名a的值。x是sum函数的返回值,x(4),即是调用了sum返回的lambda表达式

​ (3)在处理一个可迭代对象如列表,字典等时,可以用map(lambda, x) 代替 for…in…循环

代码语言:javascript
复制
# 将列表中的每个数翻倍
lis = [2,5,6]
print(list(map(lambda x:x*x, lis)))
请添加图片描述
请添加图片描述

map() 会根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 map讲解:https://www.runoob.com/python/python-func-map.html

​ (4)filter过滤

代码语言:javascript
复制
lis = [2,5,6]
x = filter(lambda x: x > 3, lst)
print('大于3的数字有:', list(x)) 
请添加图片描述
请添加图片描述

​ (5)reduce累乘

代码语言:javascript
复制
from functools import reduce
x = reduce(lambda x, y: x * y, lis)
print('累乘结果为:', x) 
请添加图片描述
请添加图片描述

reduce函数的作用是将序列的前两个元素与给定的函数联合使用,并将它们的返回值和下一个元素继续联合使用,直到整个序列处理完毕,并最终得到一个结果。 用法:https://www.runoob.com/note/26811

​ (6)sorted排序

代码语言:javascript
复制
d = {'a': 25, 'c': 27, 'b': 20, 'd': 22}
b = sorted(d.items(), key=lambda x: x[1])
print(b)  
请添加图片描述
请添加图片描述

sorted用法:https://www.runoob.com/python3/python3-func-sorted.html

参考文章:

Python Lambda函数使用总结详解:https://www.jb51.net/article/176156.htm

Python3 lambda函数高级用法:https://www.cnblogs.com/luwei0915/p/14606717.html

本人csdn博客:https://blog.csdn.net/weixin_46654114 转载说明:跟我说明,务必注明来源,附带本人博客连接。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/180982.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考文章:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档