飞道的博客

Python第十一天

442人阅读  评论(0)

匿名函数

  • 1 lambda函数也叫匿名函数,即函数没有具体的名称。先来看一个简单的例子

    def fun(x):
    	return x ** 2
    print(fun(4))
    

    使用lambda表达式,可以写成这样:

    print((lambda x:x ** 2)(4))
    
  • 2 lambda和普通的函数相比,省去了函数名而已,同时这样的匿名函数,又不能共享在别的地方调用。
    lambda基础:
    lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。lambda语句构建的其实是一个函数对象。

    print((lambda x,y:x+y)(1,2))
    
  • 3 lambda表达式内置函数:
    lambda内置函数有3个,分别是filter(筛选),map(映射),reduce(累加)
    首先是filter:筛选可迭代对象符合条件的元素,返回值一般人看不懂。

    poo = [1,5,4,3,12,9,27,55]
    print(filter(lambda x:x%3 == 0,poo))
    #返回值是filter object,我们可以转换一下
    print(list(filter(lambda x:x%3 == 0,poo)))
    #打印[3, 12, 9, 27],使用list转换成列表
    

    map():映射,可以看成f(x) = x(可能有些抽象)

    foo =[1,5,4,3,12,9,27,55]
    print(list(map (lambda x:x*2-1,foo)))
    #结果为[1, 9, 7, 5, 23, 17, 53, 109]
    

    可以看成这个等式:f(x) = x*2-1

    x 1 5 4 3 12
    f(x) 1 9 7 5 23

    reduce():先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算(累加求和)
    要使用reduce()函数要先导reduce包,要不然会报错

    from functools import reduce
    poo = [1,2,3,4,5,6]
    print(reduce (lambda x,y:x+y,foo))#输出21
    #下面我们可以开始整活
    print(reduce (lambda x,y:x+y,foo,int(input())))
    #reduce可以把接收到的数一起计算
    

转载:https://blog.csdn.net/baidu_38392745/article/details/104415946
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场