• python(内置高阶函数)


    1.高阶函数介绍:

    • 一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),如果满足其一,则为高阶函数。
    • 常见的高阶函数:map()、sorted()、filter()等也是python内置的函数,也可以自定义高阶函数,其实装饰器也算一种高阶函数。

    2.内置高阶函数:

    (1)map(function,iterable) 函数

    • function:接收一个函数
    • iterable:接受一个可迭代对象(字符串,元组,列表,字典)
    • 作用:可将迭代对象 __iter1 依次代入这个函数,然后将结果组成一个列表返回
    """
    #将列表 a 中的元素全部转换成字符串
    a = [1,2,3,4]
    
    b = map(str,a)
    print(list(b))
    """
    
    """
    #将下面stu列表中的姓氏进行首字母大写操作
    stu = ["ZHAo","qIan","SUN","Li"]
    #自定义首字母大写方法
    def NameStyle(name):
        return name[0].upper() + name[1:].lower()
    #使用map()函数,传入参数为,自定义的函数NameStyle名称,和可迭代对象stu
    stu2 = map(NameStyle,stu)
    print(list(stu2))
    """

    (2)filter(function,iterable) 函数

    • function:接收一个函数
    • iterable:接受一个可迭代对象
    • 作用:将可迭代对象依次传入该函数,通过返回值是 True 或 False 决定去留(过滤或筛选)
    """
    #找出列表 strs 中的所有字符串
    strs = ["a","b","c",1,2]
    def get_str(x):
        if isinstance(x,str):   #判断传入的元素 x 是否是 str 型
            return True
    new_strs = filter(get_str,strs)
    print(list(new_strs))
    """
    
    """
    #找出列表中http链接
    http = ["http://www.baidu.com","apple","http://weibo.cn","中国人"]
    def ht(param):
        if param.startswith("http"):
            return True
            
    all_http = filter(ht,http)
    print(list(all_http))
    """

     (3)sorted(iterable,key,reverse) 函数

    • iterable:可迭代对象
    • key:主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
    • reverse:排序规则,reverse = True 降序 , reverse = False 升序(默认)
    • 返回值:返回重新排序的列表
    """
    #根据成绩排序
    grade = [("Tom",75),("Jerry",92),("Apple",66),("Ben",88)]
    
    def get_grade(x):
        return x[1]
    
    print(sorted(grade,key=get_grade))
    """
    
    """
    # 根据字符串长度排序
    name = ["Tom","Jerry","Apple","Ben"]
    
    def len_name(x):
        return len(x)
    
    print(sorted(name,key=len_name))
    """

    3.嵌套函数

    • 函数内部再进行定义函数成为嵌套函数
    def foo():
        msg = "China"
        def fo():
            return msg
        return fo()
    print(foo())

    4.匿名函数

    • 特点:
      • 只能有一个表达式
      • 匿名函数只有一个参数
      • 匿名函数也是一个函数对象,可以赋值给一个变量
      • 经常配合高阶函数使用
    #计算出列表中所有值的平方
    li = [1,2,3,4,5]
    """
    #高阶函数用法
    def foo(x):
        return x * x
    print(list(map(foo,li)))
    """
    #匿名函数用法
    """
    print(list(map(lambda x: x * x,li)))    #第一个 x 为参数,x * x 为计算逻辑
    """
    #匿名函数赋值给变量 f
    
    f = lambda x: x * x
    print(f(2))
    #求出 1-20 的所有奇数
    J = list(filter(lambda x: x % 2 != 0,range(1,20)))
    print(J)
  • 相关阅读:
    LeetCode算法题-Find Pivot Index(Java实现)
    LeetCode算法题-Longest Word in Dictionary(Java实现)
    LeetCode算法题-1-bit and 2-bit Characters(Java实现)
    2016-8-4学习正则表达式
    doT 这个模板 是怎么实现的?
    manually Invoking Model Binding / Model Binding /Pro asp.net mvc 5
    隐隐约约 听 RazorEngine 在 那里 据说 生成代码 很 美。
    web api 的 安全 认证问题 , 对外开放 的 时候 需要考虑到安全的问题
    鼠标滑过显示图片
    页面加载中效果实现
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/12395087.html
Copyright © 2020-2023  润新知