详解python中的lambda函数

什么是lambda?

lambda是Python中预留的一个关键词,当我们需要一个函数,而又不想重新去为函数命名时,我们就可以使用lambda关键词来简单的去定义一个函数,也就是所谓的匿名函数,它在我们的编程过程中会出现很多次。

lambda函数的语法

在Python中,我们可以这样定义一个lambda函数,它的语法格式为:

lambda argument_list: expression

  • argument_list是参数列表,也就是函数所用到的参数
  • expression是关于参数的表达式,表达式中的参数需要在参数列表中有定义

这里我们需要注意,参数列表argument_list与表达式expression之间要用":"隔开,并且lambda函数具有输入和输出,它的输入就是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的结果(等效于return)。

lambda函数的用法

  1. 将lambda函数赋值给变量,通过变量间接调用lambda函数
    例如我们定义一个lambda函数,并将其赋值给变量a,就能直接用变量a调用lambda函数

    >>> a=lambda x:x+3
    >>> a(5)
    8
    
  2. 将lambda函数作为其他函数的返回值
    lambda函数作为其他函数的返回值时,此时lambda函数实际为函数的内嵌函数

    >>>def test(n):
    ...return lambda x:x+n
    >>>t=test(3)
    >>>t(2)
    5
    

    lambda函数作为test函数的内部函数,能够访问外部函数的变量n,就形成了所谓的闭包,这里不作进一步阐述

  3. 将lambda函数作为其他函数的参数
    利用lambda函数我们可以实现对函数编程,即把lambda函数当做参数传递给其他函数,例如map()函数,map()函数会根据提供的函数对指定序列做映射,这里以一个阿里面试题为例:

    用一行代码实现对a=[1,2,3,4,5]的偶数位置的元素进行加3后求和
    我们可以利用定义lambda函数,然后把它当作参数传递给map()函数,就可以返回对偶数位置的映射,然后对其求和

    >>> a=[1,2,3,4,5]
    >>> map(lambda x:x+3,a[1::2])
    >>> print(list(map(lambda x:x+3,a[1::2])))
    [5, 7]
    >>> sum(map(lambda x:x+3,a[1::2]))
    12
    

    与map()函数类似的内置函数还有filter()、reduce()、sorted()等。

     >>> filter(lambda x: x % 3 == 0,[1,2,3,4,5,6,7,8,9])
     >[3, 6, 9]
    
    >>> from functools import reduce
    >>> reduce(lambda x,y: x+y,[1,2,3,4,5])
    15
    
    >>> sorted([0,-3,2,-9,7,4,-1],key=lambda x: abs(x))
    [0, -1, 2, -3, 4, 7, -9]
    

总结

python鼓励我们利用lambda写一些简单的函数,lambda函数可以使我们的代码更加紧凑,并且不用担心命名冲突。但语法格式决定lambda只能是一个表达式,而不是一个代码块,因此不能实现复杂的逻辑(不能写条件分支语句和异常处理等)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值