匿名函数lambda

深入理解Lambda表达式(匿名函数) 从Lambda表达式的构造,参数含义,使用时候的注意事项全面了解Lambda表达式。 阅读详情

在Python中有个匿名函数特性非常的便捷和有用,用关键字lambda就可以声明一个匿名函数,所以很多时候直接称呼为lambda函数。

每次介绍新特性的时候,我们都要反问什么是lambda函数呢?因为又叫匿名函数,所以是指没有声明函数名称的函数,它和平时我们定义普通函数使用def关键字不同,

lamda函数的声明语法如下:

lambda argument_list: expression

其中,lambda是Python预留的关键字,argument_list和expression由用户自定义,中间用冒号 ‘’:’’ 间隔。这里面argument_list是参数列表,它的结构与Python中定义普通函数时的参数列表是一样的。而这里的expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。

看下实际使用例子:

argument_list可以有非常多的形式,如下的4个例子都是可以的,方法1例子中使用了a, b变量参数,方法2例子中用a=1, b=2设置默认值参数,方法3例子中用*args*位置参数,方法4例子中用**kwargs关键字参数来作为lambda函数的参数传递方式都是可以的。expression表达式里我们分别对应argument_list里接收的参数做了各自的表达式处理。

func1 = lambda a, b: a + b 
print(f'func1: {func1(1, 2)}')

func2 = lambda a=1, b=2: a * 2
print(f'func2: {func2()}')

func3 = lambda *args: [arg * 2 for arg in args]
print(f'func3: {func3(3, 2)}')

func4 = lambda **kwargs: [kwargs[key] * 2 for key in kwargs]
print(f'func4: {func4(a=3, b=2)}')

# 输出如下:
# func1: 3
# func2: 2
# func3: [6, 4]
# func4: [6, 4]
lambda多种用法

由于lambda的语法是固定的,所以本质上使用的用法也就是固定的,但是在不同的场景中可以扩展,比如有如下几种场景。

  • 最基本的,将lambda函数赋值给一个变量,通过这个变量间接调用该lambda函数。
lambda_func = lambda a, b: a + b 
print(f'lambda_func: {lambda_func(1, 2)}')
  
# 输出如下:
# lambda_func: 3
  • 将lambda函数作为其他函数的返回值,返回给调用者。

    函数的返回值也可以是函数。例如return lambda y: x+y返回一个加法函数。这时,lambda函数实际上是定义在某个函数内部的函数,称之为嵌套函数,或者内部函数。对应的,将包含嵌套函数的函数称之为外部函数。内部函数能够访问外部函数的局部变量,这个特性是闭包(Closure)编程的基础(这里我们不做详细展开)。

def add_number(x):
    return (lambda y: x+y)

a = add_number(1)
print(type(a))
print(a(3))

# 输出如下:
# <class 'function'>
# 4
  • 将lambda函数作为参数传递给其他函数。

    我们可以把lambda函数作为参数传递给另一个函数,比如Python中的高阶函数,高阶函数我们都知道它们本身是可以支持接收另一个函数作为参数的。此时可以使用lambda函数快速的来做一些列表元素过滤操作。

map_result = map(lambda x:abs(x), [-1,2,-3,4,-5])
print(f'map_result: {list(map_result)}')

from functools import reduce
reduce_result = reduce(lambda x,y: x+y, [1,3,5,7,9])
print(f'reduce_result: {reduce_result}')

# 输出如下:
# map_result: [1, 2, 3, 4, 5]
# reduce_result: 25
  • 将lambda函数配合if - else语句

在lambda中也可以直接使用if - else语句来做表达式判断,这个判断表达式编写的方式其实就相当于其它语言里的三元运算符,但是尽量不要编写过于复杂的判断,毕竟这样增加了代码的阅读难度。

f = lambda x: 1 if x=="a" else "none"
print(f("a"))

# 输出如下:
# 1
  • lambda函数配合字典取值

可以直接将lambda函数传入的变量参数x,以字典取值的方式取出对应的值。

str_dict = {'a':1, 'b':2, 'c':3}
f = lambda x: str_dict[x]
print(f("b"))

# 输出如下:
# 2
[Python基础]Lambda匿名函数 print(squared) # 输出: [1, 4, 9, 16, 25]两者的差异就在filter代入Funtion那参数改为自定函数或匿名函数。匿名函数优点在简洁,在大型项目中常见,这样可避免一推自定函数跟函数名称print(even_numbers) # 输出: [2, 4, 6, 8, 10]# 对应的自定义函数print(even_numbers_custom) # 输出: [2, 4, 6, 8, 10] 阅读详情

相关推荐

C++11 lambda匿名函数看这一篇足以

lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。 继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数后,C++11 标准终于引入了 lambda,本节将带领大家系统地学习 lambda 表达式的具体用法。 lambda匿名函数的定义 定义一个 lambda 匿名函数很简单,可以套用如下的语法格式: [外部变量访问方式说

二进制君 1万+

Python lambda(匿名函数),一文详解

​ 前面的文章里,我们讲了什么是函数(优快云函数详解),并且简单讲了一下什么是lambda(匿名函数)。 现在我们详细讲讲什么是 lambda 函数?lambda 函数的特点已经lambda 函数的应用。也算是完善之前的内容。

TiYong的博客 3万+

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1439

C++11:lambda匿名函数

lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。

crossoverpptx的博客 2720

OneOS远程升级能力实操演示 | OTA升级

OneOS远程升级能力实操演示,差分算法提升效率,OTA升级,OTA差分算法,全量升级、压缩升级、差分升级,有线网络连接,bootloader,升级平台,在线差分包制作,触摸屏以及GUI图形操作

OneOS是中国移动针对物联网领域推出的轻量级操作系统 2011

计算机国际会议中的proceedings、conference、paper、workshop、demo:如何区分与选择?

本文详细解析了计算机国际会议中的核心概念:Conference(会议)是学术交流的主舞台,Paper(论文)是研究成果的书面呈现,被接收后收录于Proceedings(会议论文集)。Workshop(研讨会)聚焦前沿细分领域,Demo(演示)则侧重系统与工具的可交互展示。文章为研究者根据自身阶段与工作类型,如何区分与选择投稿目标提供了实用指南。

weixin_29269441的博客 562

C++Lambda表达式

文章目录1. Lambda表达式1.1. 声明Lambda表达式1.2. 捕获外部变量1.2.1. 值捕获1.2.2. 引用捕获1.2.3. 隐式捕获1.2.4. 混合方式1.3. Lambda表达式的参数2. C++11 std::function2.1. 头文件2.2. 作用2.3 std::function 的使用有多态和万总归一的感觉,程序栗子如下:3. 实例代码 1. Lambda表达式 C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C

努力才会有幸福 1374

YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

CloFormer是清华大学在今年发表的轻量级主干网络,引入了AttnConv,一种attention风格的卷积算子。所提出的AttnConv使用共享权重来聚合局部信息,并配置精心设计的上下文感知权重来增强局部特征。AttnConv和普通attention的结合使用池化来减少CloFormer中的FLOPs,使模型能够感知高频和低频信息。这篇文章主要向大家讲解如何将CloFormer加入到YoloV8中。论文链接:https://arxiv.org/abs/2303.17803v5。

m0_47867638的博客 4311

78 匿名函数(lambda)

文章目录1、定义2、使用"关键字参数"对匿名函数进行传参3、lambda 匿名函数设定默认值4、应用场合匿名函数作为参数传递作为内置函数的参数5、实例6、小结 匿名函数是指没有名字的函数,应用在需要一个函数,但是又不想费神去命名这个函数的场合。通常情况下,这样的函数只使用一次。 1、定义 在Python中,使用lambda表达式创建匿名函数,其语法格式如下: result = lambda [arg1 [,arg2,……,argn]]:expression 参数说明: result:用于调用lambda

Blog of Lytracy 2241

ConvNeXt 系列改进:引入大核注意力(LKA)替换 7×7 深度卷积,涨点 2.1%

LSKA替换7×7深度卷积,在ImageNet分类任务上实现2.1%的显著提升,参数量仅增加1M。LSKA的四层1D分解将计算复杂度从O(k²)降至O(k),21×21大核的计算量仅相当于原版7×7的1.7倍,实现了感受野与计算成本的完美平衡。部署友好度极高:LSKA模块在TensorRT FP16量化后延迟仅1.2ms,精度损失<0.1%,远优于Transformer类模型。下游任务全面领先。

ZXSXJ的博客 699

华为 MetaERP 财务模块的核心业务对象,按子模块与架构维度分类,以表格呈现,适配架构设计与实施落地

华为MetaERP财务模块基于4A架构(业务/应用/数据/技术)与TOGAF框架,实现业财一体化与全球合规。业务架构涵盖组织模型与核心流程,应用架构支撑财务操作,数据架构确保数据一致性,技术架构提供高性能技术底座。模块覆盖总账、应收应付、资产等子模块,支持多组织、多币种、多准则核算,通过实时会计引擎实现"交易即核算"。4A架构与TOGAF框架对应,实现业务能力、应用组件、数据模型与技术栈的深度融合,为华为全球化财务核算提供核心支撑。

金牌架构师 435

lambda匿名函数

lambda表达式 lambda表达式可以用来声明匿名函数,也就是没有函数名字的临时使用的小函数,尤其适合需要一个函数作为另一个函数参数的场合。也可以定义具名函数。 lambda表达式只可以包含一个表达式,该表达式的计算结果可以看作是函数的返回值,不允许包含复合语句,但在表达式中可以调用其他函数。 语法:<函数名> = lambda <参数> : <表达式> ...

dy_yx的博客 3707

【AI智能体】Codex 开发聚合搜索应用项目实战操作详解

Codex 开发聚合搜索应用项目实战操作详解

congge 3094

Python 匿名函数之 lambda

解 lambda 之惑,有这一篇就够了😁

iprobobo的博客 3862

Ubuntu 系统下安装 OpenClaw(原 Clawdbot)的详细指南

Ubuntu 系统下安装 OpenClaw(原 Clawdbot)的详细指南

Science prince的博客 3535

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

匿名函数与lambda函数详解

匿名函数是一种没有名称的函数,而Lambda函数是Python中实现匿名函数的一种方式。它们在简化代码和提高效率方面非常有用,但也有其局限性。合理选择使用场景,可以提升代码的可读性和维护性。

鸭梨的博客 1002

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python基础:匿名函数lambda

Python中的匿名函数(lambda函数)是一种无需使用def关键字定义的轻量级函数,适用于临时、简短的逻辑场景。

an_yu_xin的博客 4015

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【C++ 11】lambda 匿名函数

【代码】【C++ 11】lambda 匿名函数。

普罗米修斯的博客 2201

函数对象和lambda匿名函数

顾名思义就是没有名字的函数,lambda函数或者叫lambda表达式创建一个匿名函数对象你定义lambda表达式实际上定义了一个可以像函数一样调用的对象。这个对象有一个调用运算符 (o perator() ),这使得它可以像函数那样被调用。没错,lambda 表达式本质上是一个匿名函数对象,这个类重载了operator(),从而允许像函数一样调用它.2[外部变量访问方式说明符] (参数) mutable noexcept/throw() -> 返回值类型函数体;

2403_84775671的博客 923

c++Lambda匿名函数

c++Lambda匿名函数

敖丙007的博客 624

python匿名函数lambda_匿名函数lambda

Python有一种定义函数的机制,叫做lambda。使用lambda关键字定义的函数,也被称为匿名函数。本文介绍如何使用Python的lambda匿名函数。用举例的方式来说明lambda匿名函数应该是最好的方式:>>> f = lambda x: x*2>>> f(3)6>>> f(6)12>>> f(9)18>>> def fwn(x):... return x*2...>>> fwn(...

weixin_39951112的博客 117

【Python】lambda匿名函数

在Python中,可以使用def关键字定义函数,使用def定义的关键字是有名称的,在调用时可以重复使用.还有一种是使用lambda关键字进行函数的定义,这个方式定义的函数是匿名函数只能临时使用一次本文主要讲解lambda匿名函数lambda 形参 : 函数体注意:匿名函数的函数体只能写一行,无法写入多行代码lambda表达式还是很重要的,在后面的学习中我们也会大量使用到lambda匿名函数.希望这篇文章能帮到你!python专栏在不断更新中,欢迎订阅!“愿与君共勉,携手共进!

云泽野の编程日记 692

Lambda匿名函数

>的左边:lambda行参列表,对应着要重写的接口中的抽象方法的行参列表;>API中函数式接口所在的包,在Java.util.function包下。->的右边:lambda体,对应着接口的实现类要重写的方法的方法体;>只有给函数式接口提供实现累的对象时,才可以使用lambda表达式。>如果接口中只声明一个抽象方法,则此接口称为函数式接口。作为接口的实现类的对象。-->"万事万物皆对象"->:lambda操作符或箭头操作符;

weixin_71439406的博客 191
上一篇: python之datetime模块
下一篇: 路径处理库pathlib使用详解
itanders
博客等级 码龄19年 178粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值