Python_高阶函数
高阶函数: 函数的参数或者返回值都是一个函数,那么这样的函数我们称为高阶函数
高阶函数1 -> 函数的参数是一个函数类型
def calculate_value(new_func): # new_func 如果是一个函数类型的参数,那么calculate_value就是高阶函数 num1 = 1 num2 = 2 result = new_func(num1, num2) print(result) # def xxx(x, y): # return x + y calculate_value(lambda x, y: x + y)
高阶函数2 -> 函数的返回值是一个函数类型
def show_info(): print("show_info执行了") # 特殊的用法:在python里面支持在一个函数里面在定义一个函数 def inner_func(): print("inner_func函数执行了") # 这里返回了inner_func函数,那么show_info就是一个高阶函数 return inner_func new_func = show_info() # =》inner_func new_func()
高阶函数-map、filter、reduce
映射类map()
接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
示例一:返回列表中元素平方后的结果
list_x = [1, 2, 3, 4, 5] print(map(lambda x : x*x, list_x)) print(list(map(lambda x : x*x, list_x)))
<map object at 0x0000011C145567B8> [1, 4, 9, 16, 25]
示例二:对两个列表中的元素对应求和
list_x = [1, 2, 3, 4, 5, 6] list_y = [1, 2, 3, 4, 5] print(list(map(lambda x,y : x+y, list_x, list_y))) [2, 4, 6, 8, 10]
过滤类filter()
和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

示例一:
my_list = ['ab', 'cb', 'abc'] def search_value(value): # 过滤条件是结尾是b的数据 return value.endswith("b") # 根据指定的功能函数过滤相关的数据,返回一个过滤结果对象 new_filter = filter(search_value, my_list)
使用匿名函数进行传参
new_filter = filter(lambda value: value.endswith("b"), my_list) print(new_filter, type(new_filter))
累积运算函数reduce()
根据指定函数的功能对容器类型的中每一个数据进行相关的计算
利用reduce函数把元组转成字符串, 主要是做计算的
my_tuple = ('a', 'b', 'c') # 这个函数完成字符串拼接 def join_str(v1, v2): return v1 + v2 # 执行流程:根据join_str 函数对元组中的每一个数据进行拼接字符串操作,返回一个新的字符串数据 result = reduce(join_str, my_tuple)
使用匿名函数进行传参
result = reduce(lambda x, y: x + y, my_tuple)
序列[1, 3, 5, 7, 9]变换成整数13579
from functools import reduce def fn(x, y): return x * 10 + y reduce(fn, [1, 3, 5, 7, 9])
浙公网安备 33010602011771号