美文网首页
lambda表达式

lambda表达式

作者: 酸甜柠檬26 | 来源:发表于2019-06-05 22:46 被阅读0次

    2019-06-04
    lambda表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数。
    1、应用在函数式编程中#这四个高阶函数还要在廖雪峰的官网上继续深入学习!
    高阶函数:map reduce filter sorted
    这些函数都支持函数作为参数,所以lambda可以应用在函数式编程中。
    map:
    map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
    eg:将序列li = [1,2,3,4,5]中的每个元素加1。

    >>> li = [1,2,3,4,5]
    >>> a = map(lambda x: x+1,li)#返回所有的元素都加1
    >>> list(a)
    [2, 3, 4, 5, 6]
    

    reduce:
    reduce()把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
    reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

    >>> from functools import reduce
    >>> reduce(lambda x, y: x * y, li)#返回所有元素相乘的结果
    120
    

    filter:
    和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

    >>> filter(lambda x:x % 2 == 0,li)
    <filter object at 0x0000020DB5CA8320>
    >>> c = filter(lambda x:x % 2 == 0,li)#返回序列中的偶数
    >>> list(c)
    [2, 4]
    

    sorted:
    sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序。

    >>> sorted([3,-8,9,-11,1])
    [-11, -8, 1, 3, 9]
    >>> sorted([3,-8,9,-11,1],key=abs)
    [1, 3, -8, 9, -11]
    

    2、嵌套在函数内使用

    def make_repeat(n):
        return lambda s : s * n
    double = make_repeat(2)
    print(double(8))
    >>>16
    

    相关文章

      网友评论

          本文标题:lambda表达式

          本文链接:https://www.haomeiwen.com/subject/hfxdxctx.html