博客
关于我
python 高阶函数作业(3.16)
阅读量:510 次
发布时间:2019-03-07

本文共 1878 字,大约阅读时间需要 6 分钟。

总结

  • 实参高阶函数

    • Python中定义函数时,定义的变量可以接收函数类型的参数。
    • 如果一个函数的参数是另一个函数,那么这个函数就是实参高阶函数。
    • 实参高阶函数的典型例子是lambda函数和装饰器。
  • max和min函数

    • max和min函数可以接收序列和一个key参数。
    • key参数是一个函数,用来决定比较对象。
    • 例如,max(nums, key=lambda x: x%10)会根据x的个位数找到最大的数。
    • 练习:返回列表中各位数和最大的值。
      def sum1(x):
      x = str(x)
      s = 0
      for i in x:
      s += int(i)
      return s
      nums = [28, 607, 65, 19, 88]
      result = max(nums, key=sum1)
      print(result)
  • map函数

    • map函数将一个函数应用到序列中的每个元素。
    • 它可以接收多个序列,每个位置的元素组合使用函数。
    • 例如,map(lambda x: x*2, [1,2,3])会将每个数字乘以2。
    • 练习:将两个列表中的元素相加,创建一个新的列表。
      nums1 = [23, 433, 43, 2, 432]
      nums2 = [1, 2, 3, 4, 5]
      result = map(lambda item1, item2: item1 + item2, nums1, nums2)
      print(list(result))
  • reduce函数

    • reduce函数将序列中的元素通过某种累积操作合并成一个结果。
    • 它需要一个函数,用于将当前结果和下一个元素进行操作。
    • 例如,reduce(lambda x, y: x + y, [1,2,3])会计算1+2+3。
    • 练习:计算列表中所有数字的和。
      message = ['你好', 20, '30', 5, 6.89, 'hello']
      result = reduce(lambda x, item: x + item if type(item) in (int, float) else x + 0, message, 0)
      print(result)
  • 装饰器

    • 装饰器是高阶函数,它可以为函数添加功能。
    • 例如,可以为函数添加打印执行时间的功能。
    • 练习:写一个装饰器,将函数的返回值乘2再返回。
      def multiply_by_2(f):
      def new_f(*args, **kwargs):
      result = f(*args, **kwargs)
      if isinstance(result, (int, float, str, list, tuple, bool)):
      return result * 2
      else:
      print('输入不符合条件!')
      return new_f
      @multiply_by_2
      def func2(str1):
      return str1
      str_input = input('请输入:')
      print(func2(str_input))
  • 补充 * 和 ** 用法

    • *用法表示将传入的位置参数作为元组传递。
    • **用法表示将字典式参数解包到函数参数中。
    • 例如,函数定义:def f(*nums):print(nums),调用f(2,3,4)会输出(2,3,4)。
    • 练习:解包和打包的应用。
      def f1(*nums):
      print(nums)
      f1(2,3,4)
  • 更多练习

    • 列表绝对值最大的元素:max(nums, key=lambda x: abs(x))。
    • 创建字典:map(lambda item1, item2: {item1: item2}, A, B)。
    • 三个列表拼接成一个字典:map(lambda item1, item2, item3: [item1, item3+item2], names, nums, subjects)。
    • 计算数字和:reduce(lambda x, item: x+item, [x for x in message if type(x) in (int, float)], 0)。
  • 通过这些练习,我对Python的高阶函数和装饰器有了更深入的理解。这些工具在实际编程中非常有用,可以帮助提高代码的效率和可读性。继续练习和探索,我相信自己会在Python编程中越来越自信。

    转载地址:http://yrrjz.baihongyu.com/

    你可能感兴趣的文章
    npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
    查看>>
    npm版本过高问题
    查看>>
    npm的“--force“和“--legacy-peer-deps“参数
    查看>>
    npm的安装和更新---npm工作笔记002
    查看>>
    npm的常用操作---npm工作笔记003
    查看>>
    npm的常用配置项---npm工作笔记004
    查看>>
    npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
    查看>>
    npm编译报错You may need an additional loader to handle the result of these loaders
    查看>>
    npm设置淘宝镜像、升级等
    查看>>
    npm设置源地址,npm官方地址
    查看>>
    npm设置镜像如淘宝:http://npm.taobao.org/
    查看>>
    npm配置安装最新淘宝镜像,旧镜像会errror
    查看>>
    NPM酷库052:sax,按流解析XML
    查看>>
    npm错误 gyp错误 vs版本不对 msvs_version不兼容
    查看>>
    npm错误Error: Cannot find module ‘postcss-loader‘
    查看>>
    npm,yarn,cnpm 的区别
    查看>>
    NPOI
    查看>>
    NPOI之Excel——合并单元格、设置样式、输入公式
    查看>>
    NPOI初级教程
    查看>>
    NPOI利用多任务模式分批写入多个Excel
    查看>>