美文网首页程序员
Python匿名函数 lambda表达式

Python匿名函数 lambda表达式

作者: 天凉玩个锤子 | 来源:发表于2019-10-07 19:37 被阅读0次

    当我们在创建函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。这省去了我们挖空心思为函数命名的麻烦,也能少写不少代码,很多编程语言都提供这一特性。

    Python语言使用lambda关键字来创建匿名函数。

    为什么要用匿名函数?

    1. 程序一次性使用,不需要定义函数名,节省内存中变量定义空间
    2. 让程序更加简洁

    格式

    lambda arg, arg2, ... argN : expression using args
    

    规则

    1. 必须有返回值
    2. 不能有return
    3. 可以零到多个参数

    带参数匿名函数

    >>> lambda x: x**3 #一个参数
    >>> lambda x,y,z:x+y+z #多个参数
    
    >>> lambda x,y=3: x*y #允许参数存在默认值
    
    

    匿名函数调用

    >>> c = lambda x,y,z: x*y*z
    >>> c(2,3,4)
    24
    

    lambda返回的值,结合map,filter,reduce使用

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    >>> filter(lambda x:x%3==0,[1,2,3,4,5,6])
    [3, 6]
    #等价于下面的列表推导式
    >>> l = [x for x in [1,2,3,4,5,6] if x%3==0]
    >>> l
    [3, 6]
    

    reduce()函数会对参数序列中元素进行累积。
    函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

    >>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
    15
    

    map(fun,[arg]+)函数最少有两个参数,第一参数为一个函数名,第二个参数是对应的这个函数的参数(一般为一个或多个list)

    >>>def fun(x,y,z):
    ...     return x*y*z
    ...
    >>>list(map(fun,[1,2,3],[1,2,3],[1,2,3]))
    >>>[1,8,27]
    
    >>>s = [1,2,3]
    >>>list(map(lambda x,y,z:x*y*z ,s,s,s))
    >>>[1,8,27]
    

    相关文章

      网友评论

        本文标题:Python匿名函数 lambda表达式

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