⼩甲鱼Python第021讲函数:lambda表达式课后测试题及参考答
案
笔记:
1、lambda表达式的作⽤:
1)Python写⼀些执⾏脚本时,使⽤lambda就可以省下定义函数的过程,使⽤lambda就可以使得代码更加精简。
2)有时候我们个函数起个名字也是⽐较头疼的问题(对于⼀些⽐较抽象并且整个程序执⾏下来只需要调⽤⼀两次的函数),使⽤lambda就不需要考虑命名问题。
3)简化代码的可读性,使⽤lambda函数可以省去这样的步骤。
2、两个重要的BIF
1)filter(function or None,iterable):两个参数为函数和可迭代的序列,函数定义了过滤的规则,默认过滤出真的部分。
2)map(function or None,iterable):同filter()的两个参数相同,这个内置函数的作⽤是:将序列的每⼀个元素作为函数的参数进⾏运算加⼯,直到可迭代序列的每个元素都加⼯完毕,返回所有加⼯后的元素构成的新序列。强⼤的map()后边可以接受多个序列作为参数的。
测试题:
0. 请使⽤lambda表达式将下边函数转变为匿名函数?
1def fun_A(x,y=3):
2return x*y
lambda编程>>>
lambda x,y=3:x*y
1. 请将下边的匿名函数转变为普通的屌丝函数?
1lambda x:x if x%2 else None
>>>
1def fun(x):
2if x % 2 :
3 return x
4else:
5 return None
2. 感受⼀下使⽤匿名函数后给你的编程⽣活带来的变化?
1)Python写⼀些执⾏脚本时,使⽤lambda就可以省下定义函数的过程,⽐如说我们只是需要写⼀个简单的脚本来管理服务器时间,我们就不需要专门定义⼀个函数然后再写调⽤,使⽤lambda就可以使得代码更加精简。
2)对于⼀些⽐较抽象并且整个程序执⾏下来只需要调⽤⼀两次的函数,有时候我们个函数起个名字也是⽐较头疼的问题,使⽤lambda就不需要考虑命名问题。
3)简化代码的可读性,由于普通的函数阅读经常要跳到开头def定义部分,使⽤lambda函数可以省去这样的步骤。
3. 你可以利⽤filter()和lambda表达式快速求出100以内所有3的倍数吗?
1print (list(filter(lambda x:(x%3 ==0) ,range(1,100))))
4. 还记得列表推导式吗?完全可以使⽤列表推导式代替filter()和lambda组合,你可以做到吗?
1print([x for x in range(1,100) if x%3==0 ])
5. 还记得zip吗?使⽤zip会将两数以元祖的形式绑定在⼀块,例如:
1print(list(zip( [1,3,5,7,9],[2,4,6,8,10])))
2输出:
3 [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]
但如果我希望打包的形式是灵活多变的列表⽽不是元祖(希望是[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]这种形式),你能做到吗?1print(list(map(lambda x,y:[x,y], [1,3,5,7,9],[2,4,6,8,10])))
6. 请⽬测以下表达式会打印什么?
1def make_repeat(n):
2return lambda s:s*n
3 double = make_repeat(2)
4print(double(8))
5print(double("FISHC"))
>>>16
>>>FISHCFISHC
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论