当前位置: 首页 > news >正文

Python中的匿名函数详解(lambda)

        Python支持的匿名函数,更多的地方称之为lambda函数。lambda函数在数据分析中使得数据处理非常简洁和方便。

        lambda函数由单条语句组成,其结果就是返回值,该函数由关键词lambda定义,表名匿名函数的开始。

        下面我们从一个简单的例子开始,说明匿名函数(lambda的简洁性)。假定有10个整数的数组a=[1,2,3,4,5,6,7,8,9,10],求数组a每个数值的平方。定义一个常规函数的话,如下:

  • a=[1,2,3,4,5,6,7,8,9,10]
    def fuc_s(a):for i in a:print(i**2)
    fuc_s(a)
  • 1
    4
    9
    16
    25
    36
    49
    64
    81
    100

上述功能用匿名函数实现如下:

  • a=[1,2,3,4,5,6,7,8,9,10]
    func_a=lambda x:x**2
    print(list(func_a(i) for i in a))
  • [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

        可以看到匿名函数lambda要简洁很多。lambda的语法格式:lambda 参数列表:表达式

其中,参数列表可以是多个参数。

(1)一个参数:如     s=lambda x:x**2

  • x=int(input('输入一个数字求平方:'))
    s=lambda x:x**2
    print(s(x))
  • 输入一个数字求平方:9
    81
    

(2)多个参数:如     s=lambda:x,y:x*y

  • x,y=map(int,input('输入两个数字求x的y次方:').split())
    s=lambda x,y:x**y
    print(s(x,y))
  • 输入两个数字求x的y次方:3 4
    81
    

(3)匿名函数中加上条件判断: 如  min=lambda x,y:x if x<y else y

  • x,y=map(int,input('输入两个数x,y求最小值:').split())
    min=lambda x,y:x if x<y else y
    print(min(x,y))
  • 输入两个数x,y求最小值:23 44
    23
    

(4)Lambda 只能访问自身参数,无法直接使用外部变量(需通过参数传递)

(5)lambda与def定义函数的大致比较如下:

特性Lambda 函数def 函数
名称匿名显式命名
表达式仅限一个允许多语句
返回值自动返回表达式结果需显式 return
文档字符串不支持支持
适用场景简单逻辑复杂逻辑
外部变量不能使用(需传递)可以使用

http://www.dtcms.com/a/357852.html

相关文章:

  • Acrobat Pro DC 2025安装包下载及详细安装教程,PDF编辑器永久免费中文版(稳定版安装包)
  • whisper-large-v3 模型
  • 参数模板优化配置指南:从基础到进阶的完整解决方案
  • PCIe 6.0 TLP深度解析:从结构设计到错误处理的全链路机制
  • rapid_table v3.0.0发布了
  • 《P2863 [USACO06JAN] The Cow Prom S》
  • opencv基础学习与实战之轮廓分析与模板匹配(4)
  • DP1.4 8K验证平台
  • 吴恩达机器学习作业六:反向传播
  • 三一重工AI预测性维护破局:非计划停机减少60%,技师转型与数字孪生技术搅动制造业
  • 单点登录(SSO)
  • 2.ImGui-搭建一个外部绘制的窗口环境(使用ImGui绘制一个空白窗口)
  • 从零开始学Shell编程:从基础到实战案例
  • 再来,一次内存溢出
  • 【人工智能99问】参数调整技术(31/99)
  • 【Spring Cloud Alibaba】前置知识(一)
  • RAG教程6:cohere rerank重排
  • 物理AI:连接数字智能与物理世界的下一代人工智能范式
  • 函数的逆与原象
  • 【完整源码+数据集+部署教程】传送带建筑材料识别系统源码和数据集:改进yolo11-AFPN-P345
  • vue3 表单项不对齐的解决方案
  • gpu与cpu各厂商的优劣
  • 【系列01】端侧AI:构建与部署高效的本地化AI模型
  • 【编号513】2025年全国地铁矢量数据
  • PCIe 6.0的速度奥秘:数学视角下的编码革命与信号完整性突破
  • 永磁同步电机无速度算法--传统脉振方波注入法(2)
  • Linux系统编程—进程概念
  • 疯狂星期四文案网第54天运营日记
  • 动态规划--Day03--打家劫舍--198. 打家劫舍,213. 打家劫舍 II,2320. 统计放置房子的方式数
  • Android系统框架知识系列(十九):Android安全架构深度剖析 - 从内核到应用的全栈防护