文章目录
高阶函数
- 可以接收其他函数作为参数的函数。
- 任务:利用add(x,y,f)函数,计算:x的平方根与y的平方根之和。
代码演示如下:
import math
def func(x,y,f): # 可以接收其他函数作为参数,这样的函数即为“高阶函数”
return f(x) + f(y)
print(func(4,9,math.sqrt)) # 5
def compute(a):
return a ** 2
print(func(2,3,compute)) # 13
print(func(2,3,lambda x:x**3)) # 补充:匿名函数
结果如下:
5.0
13
35
map()函数
- map()是 Python内置的高阶函数,它接收一个函数f和列表或元组对象,并通过把函数f依次作用在列表或元组的每个元素上。
- 任务:把列表中的每个字符串的第一个字母大写,其余小写。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udlwRNNT-1593599285084)(C:\Users\Lenovo\Desktop\图片1.png)]
代码演示如下:
# map()高阶函数会对传入的列表或元祖中的每个元素使用接收的函数进行处理
# 任务:把列表中的每个字符串的第一个字母大写,其余小写
fruits = ["aPPLe","bANAna","oRANGE"]
result = map(lambda s:s[0].upper()+s[1:].lower(),fruits)
print("经过map()处理过的列表:",list(result)) # 使用list()函数将最终的结果转化为列表
结果如下:
经过map()处理过的列表: ['Apple', 'Banana', 'Orange']
reduce()函数
- reduce()函数接收一个函数 f,一个序列,reduce()传入的函数 f 必须接收两个参数,reduce()对序列的每个元素反复调用函数f,并返回最终结果值。
代码演示如下:
# reduce()对序列的每个元素反复调用接收到的函数f,并返回最终结果值
# 注意:对于接收到的函数f,必须有两个参数
from functools import reduce # 导入reduce函数
def add(x,y): # 传入reduce()中的函数必须接收两个参数
return x + y
print(reduce(add,range(1,101)))
print(reduce(lambda x,y:x+y,range(1,101)))
结果如下:
5050
5050
filter()函数
- filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个可迭代对象,这个函数 f 的作用是对每个元素进行判断
- f返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kt7bHA9d-1593599285087)(C:\Users\Lenovo\Desktop\图片2.png)]
代码演示如下:
~~~Python
# filter()高阶函数用于对传入的可迭代对象进行元素过滤
filter_object = filter(lambda x:x%2==0,range(1,101))
print(list(filter_object)) # 使用list()函数转化为列表
结果如下&#