主要内容 #
高阶函数的定义
高阶函数: 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、念数字 – ★★★