主要内容 #
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]))
3. 小结 #