Day13-函数应用和模块

Day13-函数应用和模块

1.匿名函数

  • 匿名函数的定义-------匿名函数的本质还是,除了定义的语法结构和普通函数不一样,其他都一样

    lambda 形参列表:返回值

    相当于:
    def 函数名(形参列表):
    return 返回值

    # 练习:写一个匿名函数,可以获取任意一个整数的十位数
    result= lambda num: num // 10 % 10
    print(result(1823))
    
  • 匿名函数的运用

    给实参高阶函数传参的时候,函数对应的参数优先考虑使用匿名函数

    函数对应的参数的传参方式:1. 传普通函数的函数名 2.传匿名函数

2.常用的实参高阶函数

  • 1.max,min,sorted(sort)

    • 语法说明

      max(序列, key=函数) - 按照函数制定的规则比较序列中的元素求出最大值

      函数的要求:a.有且只有一个参数;这个参数指向序列中每个元素
      b.需要一个返回值;返回值就是比较对象(将参数看出序列中的元素,在返回值这个位置来描述比较的值和元素之间的关系)

    • 案例

      # 练习1:求nums中绝对值最小的元素
      nums = [-23, 100, 89, -56, -234, 123]
      print(min(nums, key=lambda item: item**2))
      
  • 2.map函数-------基于原序列中的元素,通过指定的规则创建一个新的序列

    • 语法说明

      map(函数, 序列1, 序列2, 序列3, … 序列N)

      函数的要求:a.有且只有一个参数,参数就指向后面这个序列中元素
      b.有一个返回值;返回值就是新序列中的元素

    • 案例

      # 案例1:提取nums中所有元素的个位数: [9, 7, 8, 0, 3]
      nums = [19, 67, 28, 100, 23]
      result = list(map(lambda item: item % 10, nums))
      print(result)
      
      # 案例4:
      nums = [100, 200, 100, 300, 400]
      rates = [0.1, 0.3, 0.25, 0.2, 0.3]
      # [10, 60, 25, 60, 120]
      result = list(map(lambda i1, i2: i1 * i2, nums, rates))
      print(result)
      
  • 2.reduce函数----------------将序列中的元素通过指定的规则合并成一个数据

    • 语法

      reduce(函数, 序列, 初始值)

      初始值:根据合并方式,初始值一般是0(数值求和)、1(数值求乘积)或者空串(字符串拼接)
      函数:a. 有且只有两个参数;第一个参数指向初始值,第二个参数指向序列中的每个元素
      b. 有一个返回值;用来描述合并方式

    • 案例

      from functools import reduce
      # 案例1: 求nums中所有元素的和: 0 + 19 + 67 + 28 + 100 + 23
      nums = [19, 67, 28, 100, 23]
      result = reduce(lambda x, item: x + item, nums, 0)
      print(result)
      

3.迭代器(iter)

  • 1.什么是迭代器

    迭代器是容器;
    特点:a.打印看不到元素
    b.无法统计元素个数
    c.获取元素的时候只能从上往下(从前往后)按顺序一个一个的取,并且取一个就少一个

  • 2.创建迭代器

    1.通过类型转换将其他容器转换成迭代器

    2.创建一个生成器

  • 3.获取元素

    • 获取单个元素

      next(iter)

    • 遍历

4.生成器

  • 1.什么是生成器

    生成器是容器;生成器作为容器保存不是多个数据,而是产生多个数据的算法。

  • 2.怎么创建生成器

    生成器能创建多少个数据以及能创建哪些数据,就看执行生成器对应的函数的函数体的时候,
    会遇到几次yield,每次遇到yield的时候对应的值是多少

    def func2():
        yield 100
        yield 200
        yield 300
        for x in range(3):
            yield x*1000
    gen2 = func2()
    # print(list(gen2)) 
    #[100,200,300,0,1000,2000]
    
  • 3.怎么控制生成器中元素的个数和值

    生成器能创建多少个数据以及能创建哪些数据,就看执行生成器对应的函数的函数体的时候,
    会遇到几次yield,每次遇到yield的时候对应的值是多少

  • 4.怎么获取生成器中的元素

    和迭代器获取元素的方式一样

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值