廖雪峰Python学习笔记4——高阶函数(map,reduce)

高阶函数

  • 变量可以指向函数:f=abs
  • 函数名也是变量:
    注意:由于abs函数实际上是定义在import builtins模块中的,所以如果需要修改abs变量的指向在其他模块也生效,需要使用:import builtins;builtins.abs=10
  • 传入函数
    一个函数可以接受另一个函数作为参数——高阶函数
def add(x,y,f):
    return f(x)+f(y)

print(add(5,-6,abs))

变量可以指向函数

  • map函数:map(函数f,iterable)把一个函数f,作用在可迭代对象上
    在这里插入图片描述
    (注:map()的返回值已经不再是list,而是iterators,直接使用会报错<map object at 0x000001A8A5497048>需要将iterator 转换成list , 比如 list(map())
    (注:若函数中已经定义过一个list,则使用list(map())时会报错TypeError: 'list' object is not callablecallable()是python的内置函数,用来检查对象是否可被调用,(可被调用指的是对象能否使用()括号的方法调用)将自定义的列表名字修改,不叫list就可以了)

  • reduce函数:作用在一个序列上,把结果继续和序列的下一个元素做累积计算reduce(函数fun,序列)
    在这里插入图片描述
    (注:使用rudece函数需要先导入:from functool import ruduce )
    (注:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4))

  • lambda函数:(一个匿名函数)
    lambda 参数:表达式
    在这里插入图片描述
    (注:参数:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数)
    (注:表达式:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数。如果为元组,则应用圆括号将其包含起来)

  • list.split(),split()函数通过指定分隔符对字符串进行切片,通常通常输入的字符串需要分割处理
    在这里插入图片描述

  • .upper()将字母转换为大写,

  • .lower()将字母转换为小写

  • raw_print()==print(),python3中使用print()代替raw_print(),在Python3中使用raw_python会报错name 'raw_input' is not defined

  • eval(expression[, globals[, locals]])eval() 函数用来执行一个字符串表达式,并返回表达式的值
    在这里插入图片描述
    练习:

  • 利用map()函数,把输入的英文名,变成首字母大写其余小写
    思路:
    1、input()获取输入的str
    2、str.split()切片,将输入的str用','分开成list
    3、map(fun,list)函数,将函数作用到list的每个元素上
    4、list(map()) 将得到一个list
    5、list[0]即取第一个元素,list[1:]即取第二个及之后的元素
    在这里插入图片描述

  • 接收一个list并利用reduce()求积
    思路:
    1、定义pord()函数接收list
    2、定义fun3(x,y)函数,实现乘积
    3、使用reduce()函数,将fun3函数作用在L上
    (2、或者使用匿名函数:lambda 参数:表达式)
    在这里插入图片描述

  • 把字符串’123.456’转换成浮点数123.456
    思路:
    1、使用list.index(‘.’)函数,定位到“.”的位置n
    2、使用map(int,list)将str强制转换成int型
    3、list(map()),组装成list
    4、以"."为分界线,将list按照整数部分,小数部分拆分成两个list
    5、reduce(fun,list)将fun函数作用到list上,将list,变成整数/小数部分
    在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值