学习笔记-小甲鱼Python3学习第二十一讲:函数:lambda表达式

lambda表达式的作用:

1、用来创建匿名函数,即不适用def语句这样标准的形式定义一个函数

2、lambda只是一个表达式,函数体比def简单很多

3、lambda主体只是一个表达式,而不是一个代码块,仅能在表达式中封装有限的逻辑

4、lambda函数拥有自己的命名空间,且不能访问自己参数列表外或全局命名空间里的参数

lambda 函数的语法只包含一个语句:

lambda [arg1 [,arg2,.....argn]]:expression


def add(a,b):

    return a * 2 +b

这个函数使用lambda可以写为:

扫描二维码关注公众号,回复: 2906731 查看本文章

add = lambda a,b:a * 2 +b


两个牛逼的BIF

filter():过滤器

filter()函数是 Python 内置的一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。

打印10以内的奇数

    list(filter(lambda x:x%2,range(10)))

打印10以内的偶数

    list(filter(lambda x:x%2 ==0,range(10)))


map():映射

map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

把0到10的每个数组乘以2之后打印出来

    list(map(lambda x:x*2,range(1)))


------------------分割线,哈哈哈-----------------


课后作业:


0.请使用lambda表达式将下列函数转变为匿名函数。

>>> def fun_A(x,y=3):

return x*y

lambda x,y=3:x*y


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

lambda x:x if x%2 else None


def odd(x):

if x%2:

return x

else:

return None


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

    a、lambda表达式可以省下定义函数的过程,不用专门定义一个函数再写调用,使用lambda可以使代码更精简。

    b、有些只需要调用一两次的函数,使用lambda不需要考虑函数命名的问题。

    c、简化代码的可读性,省去def定义过程。


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

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


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

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


5.还记得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]))


6.请目测一下表达式会打印什么?


>>> def make_repeat(n):

return lambda s:s*n

>>> double = make_repeat(2)

>>> print(double(8))

>>> print(double('FishC'))

16

FishCFishC


猜你喜欢

转载自blog.51cto.com/wszzdanm/2165104
今日推荐