主要内容 #
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() #
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])))
# 最简单的升序排序列表 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]))