FishC笔记—21 讲 函数:lambda表达式

本期内容详解:
1、lambda表达式的作用:
1)Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。
2)对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候我们个函数起个名字也是比较头疼的问题,使用lambda就不需要考虑命名问题。
3)简化代码的可读性,由于普通的函数阅读经常要跳到开头def定义部分,使用lambda函数可以省去这样的步骤。
2、两个重要的BIF
1)filter(function or None,iterable):两个参数为函数和可迭代的序列,函数定义了过滤的规则,默认过滤出真的部分。
2)map(function or None,iterable):同filter()的两个参数相同,这个内置函数的作用是:将序列的每一个元素作为函数的参数进行运算加工,直到可迭代序列的每个元素都加工完毕,返回所有加工后的元素构成的新序列。

典型课后题
请使用lambda表达式将下边函数转变为匿名函数?

    def fun_A(x,y=3):  
        return x*y  

答:

lambda x,y=3: x * y

请将下边的匿名函数转变为普通的屌丝函数?

    lambda x:x if x%2 else None  

答:

    def MyFun(x):  
        if x%2 == 1:  
            return x  
        else:  
            return None  

感受一下使用匿名函数后给你的编程生活带来的变化?

答:
1)Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后再写调用,使用lambda就可以使得代码更加精简。
2)对于一些比较抽象并且整个程序执行下来只需要调用一两次的函数,有时候我们个函数起个名字也是比较头疼的问题,使用lambda就不需要考虑命名问题。
3)简化代码的可读性,由于普通的函数阅读经常要跳到开头def定义部分,使用lambda函数可以省去这样的步骤。

你可以利用filter()和lambda表达式快速求出100以内所有3的倍数吗?

list(filter(lambda x:x%3 == 0,range(1,100))) 

还记得列表推导式吗?完全可以使用列表推导式代替filter()和lambda组合,你可以做到吗?

    [x for x in range(1,100)if x%3==0]  

还记得zip吗?使用zip会将两数以元祖的形式绑定在一块,例如:

    >>> list(zip([1,3,5,7,9],[2,4,6,8,10]))  
    [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]  

但如果我希望打包的形式是灵活多变的列表而不是元祖(希望是[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]这种形式),你能做到吗?
答:

    list(map(lambda x,y : [x,y],[1,3,5,7,9],[2,4,6,8,10]))  

请目测以下表达式会打印什么?

    def make_repeat(n):  
        return lambda s : s*n  

    double = make_repeat(2)  
    print(double(8))  
    print(double('FishC'))  

答:16
FishCFishC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值