Python lambda的使用

Python Lambda的使用

一、Lambda的直观含义

在这里插入图片描述

上面是Python里面Lambdas文档的截图,划个重点,就是简洁的匿名函数

原先的函数如下:

def <lambda>(arguments):
	return expression

通过Lambda表达式,可以简化成如下形式:

"lambda" [parameter_list]: expression
二、直接定义Lambda
  1. 单个参数的情况

    f = lambda x: -x
    print(f(2))
    print(f(-3))
    

    我们直接定义了一个lambda函数,输入x,返回x的负数

    输出为

    -2
    3
    
  2. 多个参数的情况

    正如一个函数有多个参数,lambda函数同样可以有多个参数

    f = lambda x, y: x * y
    print(f(2, 3))
    print(f(-3, -3))
    

    输出为

    6
    9
    
  3. 多个返回值的情况

    lambda函数可以有多个返回值,不过返回值需要显示地用tuple来封装

    f = lambda x, y: (x * y, x - y)
    a, b = f(2, 3)
    print(a)
    print(b)
    

    这里a对应的是x*y,b对应的是x-y,输出为

    6
    -1
    
三、结合其他函数的进阶用法

在此之前,先介绍一下Python中的filter函数

在这里插入图片描述

filter函数的形式为filter(Iterator[_T], Generic[_T])这其中Iterator是一个函数,Generic是一个可迭代对象,通过filter函数,我们可以有效地过滤出我们想要的内容(即Iterator函数中返回值为True的内容)

举个例子,定义一个list和一个判断是否小于0的函数

nums = [1, -2, -4, 5, 1, -9]


def less_than_0(num):
    return num < 0


for i in filter(less_than_0, nums):
    print(i)

这里面,less_than_0是Iterator,即函数;nums是Generic,即可迭代对象

返回的filter(less_than_0, nums)是一个filter类的对象,是一个可迭代对象,因此我们可以使用for语句进行遍历,遍历得到的结果是所有的负数

-2
-4
-9

基本的知识讲完了,接下来,进行和lambda相关的讲解

  1. filter函数

    可以看出来,上一个例子还需要单独定义一个less_than_0函数,来实现这个功能,属于是有些麻烦了。因此,我们使用lambda函数来简化这个式子:

    nums = [1, -2, -4, 5, 1, -9]
    
    
    for i in filter(lambda x: x < 0, nums):
        print(i)
    

    可以看出,通过使用lambda表达式,我们使用了一个匿名函数,取代了自己定义less_than_0函数的步骤,一定程度上简化了我们的操作

  2. map函数

    和filter函数不同,map函数的主要功能是将一个值映射成另一个值,通过函数的关系,对于一个list,如果我们想快速求出这个list的绝对值形式,可以采用lambda函数快速解决:

    for i in map(lambda x: abs(x), nums):
        print(i)
    

    输出为:

    1
    2
    4
    5
    1
    9
    

    对比下面这种传统的方法,是不是优雅了不少呢?

    for i in nums:
        print(abs(i))
    
  3. sorted函数

    sorted函数的形式如下:

    在这里插入图片描述

    key参数是给定一个函数,用于映射可迭代对象中的元素,之后会根据映射后的结果对该可迭代对象进行生序或者降序的排序,很显然,这个key也可以被我们采用lambda表达式来代替

    for i in sorted(nums, key=lambda x: abs(x)):
        print(i)
    

    上述表达式的作用就是对nums的绝对值形式进行升序的排序,最后的输出结果为:

    1
    1
    -2
    -4
    5
    -9
    

四、总结

Python中lambda表达式优势主要体现在下面几点:

  • 对于单行函数,使用 lambda 表达式可以省去定义函数的过程,让代码更加简洁
  • 对于不需要多次复用的函数,使用 lambda 表达式可以在用完之后立即释放,提高程序执行的性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值