python的lambda表达式详细讲解

python的lambda表达式详细讲解前言:Lambda表达式是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象,是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包。缺点:只有一个运算式,不适用于复杂的计算。不够直观,难于理解,增加了维护成本python的lambda可以和java中的stream流一样,可以将lambda函数作为参数传递给其他函数比如说结合map、filter、sorted、reduce等一些Python内置函数使用接下来我们用代码来演示一下lambda(1)简单用法

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

前言:

作者:神的孩子在歌唱

大家好,我叫智

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==

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

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

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

    (1)简单用法

    # 求两数之和
    sum = lambda a, b: a + b
    print(sum(1,2))
    

请添加图片描述

(2)将lambda作为函数返回

# 作为函数
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…循环

# 将列表中的每个数翻倍
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过滤

lis = [2,5,6]
x = filter(lambda x: x > 3, lst)
print('大于3的数字有:', list(x)) 

请添加图片描述

​ (5)reduce累乘

from functools import reduce
x = reduce(lambda x, y: x * y, lis)
print('累乘结果为:', x) 

请添加图片描述

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

用法:https://www.runoob.com/note/26811

​ (6)sorted排序

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.net/180982.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 固态硬盘数据如何恢复「建议收藏」

    固态硬盘数据如何恢复「建议收藏」虽说很多朋友都曾使用过硬盘,但是对于硬盘的一些定义,你们却不一定真正的了解,例如固态硬盘是什么?这个概念,你能说的出来吗?我想未必吧!好吧,在说咱们的正题之前,咱们先就固态硬盘这个概念解释一下。  所谓固态硬盘,其实就是一种硬盘的类别,它在使用方法和性能上与一般的硬盘完全一样,龙腾recuva数据恢复软件但是不得不说,这种固态硬盘的稳定性更好,就这一点也让固态硬盘的档次也上升了好几倍,因此,这

    2022年9月20日
    0
  • linux查看网卡实时速率命令_linux查看哪个网卡是活跃的

    linux查看网卡实时速率命令_linux查看哪个网卡是活跃的[root@hadoop058~]#mii-tooleth0:negotiated100baseTx-FD,linkok100Mlinux下查看网卡工作速率Ethtool是用于查询及设置网卡参数的命令。概要:ethtoolethX//查询ethX网口基本设置ethtool–h//显示ethtool的命令帮助(help)ethtool–iethX//查询ethX网口的相…

    2022年10月19日
    0
  • navicat premium 激活码(JetBrains全家桶)[通俗易懂]

    (navicat premium 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlWKAWTQAJR5-eyJsaWN…

    2022年3月22日
    84
  • python wxpython菜鸟教程_wxpython新手向教程

    python wxpython菜鸟教程_wxpython新手向教程wxpython教程手写wxpython会有各种问题,可以去下载wxformbuilder布局管理器然后去百度一下这个布局管理器的教程,这里太多了不多赘述。两种创建窗口方式:classMyFrame(wx.Frame)和classMyPanel(wx.Panel)来继承wx.Frame和wx.Panel,但是用wxformbuilder来创建布局和窗口会自动帮忙写好。继承wx.Frame的结尾…

    2022年5月22日
    23
  • 手背静脉识别的图像处理算法

    手背静脉识别的图像处理算法手背静脉识别的图像处理算法题目内容及要求手背静脉识别技术作为一种全新的特征识别技术,相比于传统的生物识别技术(如指纹识别)具有许多明显的优势,然而对于该技术的研究尚处于刚刚起步阶段,使用计算机来直接进行静脉识别与身份匹配仍然较为困难,为了方便后续特征识别,提高静脉识别的准确度和优越性,有必要对获取的静脉图像进行一系列处理,得到静脉的骨架结构。题目主要要求为:1.对采集图像进行背景去除,取得…

    2022年5月16日
    41
  • Java 程序员常用的开发工具

    Java 程序员常用的开发工具1、常用开发工具作为一名Java程序开发人员,可以的选择集成开发环境IDE(IntegratedDevelopmentEnvironment)非常多,得益于Java是一门开源语言。有开源免费的;有商用收费的。如何选择一款适合自己的集成开发环境,亦或说选择一款符合自己项目开发需要的集成开发环境。如果选择得当,那么就能够使得开发工作事半功倍;否则事倍而功半。 免费开源EclipseEclipse最…

    2022年7月7日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号