• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
喵了个喵0507
博客园             管理     
【python】第一模块 步骤二 第五课、python中的常用高阶函数

第五课、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函数的区别

 

 

 

 

 

 

 

 

 

 

 

posted on 2019-11-05 17:05  喵了个喵0507  阅读(197)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3