第五课、python中的常用高阶函数
一、课程介绍
1.1 课程概要
课程概要
- lambda函数
课程目标
- 理解lambda函数的演变过程
- 掌握filter、map、reduce函数的使用
教学思路
- 从filter、map、reduce来理解lambda函数
- 通过示例来掌握filter、map、reduce函数的使用
二、高阶函数的应用
2.1 什么是filter函数
章节概要
- lambda函数
- 装饰器
- 带参数的装饰器
lambda函数
- lambda函数是一种表达式,创建内嵌的简单匿名函数
filter函数的使用
- 返回一个filter对象,其中包含对其执行函数时结果为真的所有元素
- filter(func,seq)
1 def f(n): 2 """判断给定的数是不是奇数""" 3 return n % 2 != 0 4 5 6 def use_filer(l): 7 """ 8 获取指定列表/元组中的奇数 9 :param l:list/tuple 要过滤的数据 10 :return:过滤好的奇数列表 11 """ 12 rest = filter(lambda n:n % 2 !=0,l) 13 # rest = filter(f, l) 14 return rest 15 16 17 if __name__ == '__main__': 18 l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 19 rest = use_filer(l) 20 print(list(rest))
2.2 什么是map函数
map函数的使用
- 创建一个列表,其中包含对指定序列包含的项执行指定函数返回的值
- map(function,sequence,...)
1 def pow_number(l): 2 """ 3 根据给定的列表数据,计算里面每一项的立方 4 :param l: list/type int类型的列表或者是元组 5 :return:原来列表中每一项的立方 6 """ 7 rest_list = [] 8 for x in l: 9 rest_list.append(x*x*x) 10 return rest_list 11 12 13 def f(n): 14 """求给定数的立方""" 15 return n * n * n 16 17 def pow_num_use_map(l): 18 """ 19 使用map函数计算给定列表的每一项的立方 20 :param l: list/type int类型的列表或者是元组 21 :return:原来列表中每一项的立方 22 """ 23 return map(f, l) 24 25 def pow_num_use_lambda(l): 26 """ 27 使用map函数计算给定列表的每一项的立方 28 :param l: list/type int类型的列表或者是元组 29 :return:原来列表中每一项的立方 30 """ 31 return map(lambda n: n * n * n , l) 32 33 if __name__ == '__main__': 34 l=[1, 2, 3, 4, 5, 6, 7, 9] 35 rest = pow_number(l) 36 print(rest) 37 print('---------------') 38 rest_map = pow_num_use_map(l) 39 print(list(rest_map)) 40 print('---------------') 41 rest_lambda = pow_num_use_lambda(l) 42 print(list(rest_lambda))
2.3 什么是reduce函数
reduce函数的使用
- 使用指定的函数将序列的前两个元素合二为一,再将结果与第三个元素合二为一,以此类推,直到处理完整个序列并得到一个结果
- reduce(func,seq[,initial])
- 等价于func(func(func(seq[0],seq[1],seq[2],...)))
1 from functools import reduce 2 3 4 def get_sum(l): 5 """ 6 根据给定的列表,求里面各个数字的总和 7 :param l: list/type 里面是整数 8 :return: 列表所有项的和 9 """ 10 rest = 0 11 for i in l: 12 rest += i 13 return rest 14 15 16 def get_sum_use_py(l): 17 """ 18 使用python内置的sum()进行求和 19 :param l: 20 :return: 21 """ 22 return sum(l) 23 24 def f(m,n): 25 """求两个数的和""" 26 return m + n 27 28 def get_sum_use_reduce(l): 29 """ 30 使用reduce进行求和 31 :param l: 32 :return: 33 """ 34 return reduce(f, l) 35 36 37 def get_sum_use_lambda(l): 38 """ 39 使用reduce+lambda进行求和 40 :param l: 41 :return: 42 """ 43 return reduce(lambda m, n: m + n, l) 44 45 if __name__ == '__main__': 46 l = [1, 2, 4, 6, 7, 8, 9] 47 rest = get_sum(l) 48 print(rest) 49 print('____________') 50 rest_py = get_sum_use_py(l) 51 print(rest_py) 52 print('____________') 53 rest_reduce = get_sum_use_reduce(l) 54 print(rest_reduce) 55 print('____________') 56 rest_lambda = get_sum_use_lambda(l) 57 print(rest_lambda)
第3章 课程总结
3 课程总结
课程总结
- 什么是lambda函数
- map、filter、reduce函数的区别
知识点回顾
- lambda函数
- lambda是一种表达式,创建内嵌的简单匿名函数
- filter函数的使用
- 返回一个列表,其中包含对其执行函数时结果为真的所有元素
- filter(func,seq)
- map函数的使用
- 创建一个列表,其中包含对指定序列包含的项执行指定函数返回的值
- map(function,sequence,...)
- reduce函数的使用
- 使用指定的函数将序列的前两个元素合二为一,再将结果与第3个元素合二为一,依此类推,直到处理完整个序列并得到一个结果
- reduce(func,seq[,initial])
- 等价于func(func(func(seq[0],seq[1]),seq[2]),...)
重点知识
- 理解lambda函数的演变过程
- 掌握filter、map、reduce函数的使用
难点知识
- 理解filter、map、reduce函数的区别
浙公网安备 33010602011771号