zoukankan      html  css  js  c++  java
  • 匿名函数and内置函数

    匿名函数

    语法()
    lambda 形参:表达式相当与函数返回值
    
    匿名函数通常不会单独使用,是配合内置函数一起使用
    
    # 匿名函数:
    # 1.匿名函数没有函数名
    # 2.匿名函数的关键字采用lambda
    # 3.关键字 lambda 与标识函数功能体 : 之间一定是参数,所以省略()
    # 4.匿名函数没有函数体,只有返回值,所以函数体和返回值的return关键字都省略了
    
    # 注意:
    # 1.参数的使用和有名函数一样,六种形参都支持
    # 2.返回值必须明确成一个值,可以为单个值对象,也可以为一个容器对象
    用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数,不将匿名函数赋值给变量用完就会被垃圾回收机制回收
    
    a = lambda *args, **kwargs: '返回值1', '返回值2'
    print(a)  # (<function <lambda> at 0x0000022D0B7E88C8>, '返回值2')
    
    print(a[0]())  # 返回值1

    常用的内置函数

    max

    内部是基于for循环的计较元素大小得出最大值
    
    max结合匿名函数工作原理
    
    #max(iter, lambda x: x)
    
    # 1.max内部会遍历iter,将遍历结果一一传给lambda的参数x
    # 2.依据lambda的返回值作为比较条件,得到最大条件下的那个遍历值
    # 3.对外返回最大的遍历值
     

    min()原理工作原理和max()一样,得到的是最小值

    map()

    描述
    map() 会根据提供的函数对指定序列做映射。
    
    map() 函数语法:
    
    map(function, iterable, ...)
    
    参数
    function -- 函数
    iterable -- 一个或多个序列
    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
    
    返回值
    Python 2.x 返回列表
    
    Python 3.x 返回迭代器
    
    
    >>>def square(x) :            # 计算平方数
    ...     return x ** 2
    ... 
    >>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
    [1, 4, 9, 16, 25]
    >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
    [1, 4, 9, 16, 25]
     
    # 提供了两个列表,对相同位置的列表数据进行相加
    >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
    [3, 7, 11, 15, 19]
     

    zip()

     
    函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
    
    如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
    
    zip 方法在 Python 2 和 Python 3 中的不同:在 Python 3.x 中为了减少内存,zip() 返回的是一个对象。如需展示列表,需手动 list() 转换。
    
    zip 语法:
    
    # zip([iterable, ...])   
    
    iterabl -- 一个或多个迭代器;
    返回元组列表
    
    >>>a = [1,2,3]
    >>> b = [4,5,6]
    >>> c = [4,5,6,7,8]
    >>> zipped = zip(a,b)     # 打包为元组的列表
    [(1, 4), (2, 5), (3, 6)]
    >>> zip(a,c)              # 元素个数与最短的列表一致
    [(1, 4), (2, 5), (3, 6)]
    >>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
    [(1, 2, 3), (4, 5, 6)]
     

    filter()

     
    描述
    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
    
    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
    
    注意: Pyhton2.7 返回列表,Python3.x 返回迭代器对象,具体内容可以查看:Python3 filter() 函数
    
    filter() 方法的语法:
    
    filter(function, iterable)
    参数
    function -- 判断函数。
    iterable -- 可迭代对象
    返回值:返回列表
    
    过滤出列表中的所有奇数:
    def is_odd(n):
        return n % 2 == 1
     
    newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    print(newlist)     #输出结果 :[1, 3, 5, 7, 9]
    
    过滤出1~100中平方根是整数的数:
    import math
    def is_sqr(x):
        return math.sqrt(x) % 1 == 0
     
    newlist = filter(is_sqr, range(1, 101))
    print(newlist)
    #输出结果 :[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
     

    sorted()

     
    sorted() 函数对所有可迭代的对象进行排序操作。
    
    sort 与 sorted 区别:
    
    sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
    
    list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
    
    sorted 语法:
    sorted(iterable, cmp, key, reverse)
    
    参数说明:
    iterable -- 可迭代对象。
    cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
    key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
    reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
    
    返回值:返回重新排序的列表。
    
    >>>a = [5,7,6,3,4,1,2]
    >>> b = sorted(a)       # 保留原列表
    >>> a 
    [5, 7, 6, 3, 4, 1, 2]
    >>> b
    [1, 2, 3, 4, 5, 6, 7]
     
    >>> L=[('b',2),('a',1),('c',3),('d',4)]
    >>> sorted(L, cmp=lambda x,y:cmp(x[1],y[1]))   # 利用cmp函数
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
    >>> sorted(L, key=lambda x:x[1])               # 利用key
    [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
     
     
    >>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
    >>> sorted(students, key=lambda s: s[2])            # 按年龄排序
    [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
     
    >>> sorted(students, key=lambda s: s[2], reverse=True)       # 按降序
    [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
     

    reduce()

     
    reduce() 函数会对参数序列中元素进行累积。
    
    函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
    
    reduce() 函数语法:
    reduce(function, iterable[, initializer])
    
    参数
    function -- 函数,有两个参数
    iterable -- 可迭代对象
    initializer -- 可选,初始参数
    
    返回值:返回函数计算结果
    
    >>>def add(x, y) :            # 两数相加
    ...     return x + y
    ... 
    >>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
    15
    >>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
    15
  • 相关阅读:
    PHP ftp_rmdir() 函数
    PHP ftp_rename() 函数
    PHP ftp_rawlist() 函数
    PHP ftp_raw() 函数
    PHP ftp_pwd() 函数
    PHP ftp_put() 函数
    PHP ftp_pasv() 函数
    PHP ftp_nlist() 函数
    PHP ftp_nb_get() 函数
    PHP ftp_nb_fget() 函数
  • 原文地址:https://www.cnblogs.com/pscly/p/11178971.html
Copyright © 2011-2022 走看看