跳至正文
View Categories

< 1 min read

主要内容 #

  • 高阶函数的定义
  • 高阶函数: map(), sorted()
  • 1. 高阶函数的定义 #

    一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(如果返回值是函数本身,则为递归)。 满足上述条件的其中一个则称为高阶函数。 简单来说,假设a函数的参数是b函数,或者a函数的返回值是b函数,则a函数为高阶函数 高阶函数的参数或者返回值可以是lambda匿名函数 高阶函数的存在丰富了函数的参数定义和返回值定义 比如: 参数为函数:
    def bar():
        print("in the bar! ")
    
    def foo(func):
        func()
        print("in the foo! ")
    
    foo(bar) # 此时foo为高阶函数
    返回值为函数:
    def bar():
        print("in the bar! ")
    
    def foo():
        print("in the foo! ")
        return bar
    
    res = foo() # 此时foo为高阶函数
    res()

    2. 高阶函数: map(), sorted() #

  • map()
  • map()函数的功能是根据提供的函数对指定序列做映射 语法如下: map(function, iterable, …) 参数说明: function: 提供的函数 iterable: 一个或者多个序列 功能: 返回处理好的迭代器 例如:
    def square(x):
        # 计算平方数
        return x ** 2
    	
    map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
    print(map(square, [1,2,3,4,5])) #打印迭代器
    print(list(map(square, [1,2,3,4,5]))) # 将迭代器转为列表,打印最终结果
    参数可以是lambda函数
    print(list(map(lambda x: x ** 2, [1,2,3,4,5])))
    print(list(map(lambda x,y: x+y, [1,2,3,4,5], [2,3,4,5,6])))
  • sorted
  • sorted()函数的功能是对可迭代的对象进行排序操作。 语法如下: sorted(iterable, key=None, reverse=False) 参数说明: iterable: 可迭代对象 key: 用来进行比较的元素(可以用函数表示) reverse: 排序规则,True表示降序,False为默认值,表示升序 功能: 返回重新排序的列表 例如:
    # 最简单的升序排序列表
    print(sorted([5, 2, 3, 1, 4])) 
    
    # 不用revserse,利用key进行倒序排序
    print(sorted([5,2,3,1,4], key=lambda x: -x)) 
    
    
    dict_1 = {1:6, 3:4, 2:5, 4:3}
    print(sorted(dict_1)) # sorted可接受字典,但返回的是排序好的字典的key列表
    
    # 返回的是列表,元素是元组,保存的是字典的key-value对
    print(sorted(dict_1.items(), key=lambda x:x[0]))

    3. 小结 #

  • 高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数
  • 高阶函数: map(), sorted()
  • OJ训练题 #

    1、输出完美数 – ★
    2、蜗牛字母 – ★
    3、数列求和 – ★
    4、大写字母Y – ★★★
    5、念数字 – ★★★