python 高阶函数笔记map, filter, reduce

ay17:

1.高阶函数:

特点:函数的形参位置必须接受一个函数对象

分类学习:

1).map(fn,lsd1,[lsd2...]):

参数一:fn  --> 函数对象
参数二:lsd1 --> 序列对象(字符串、列表、range...)

功能:
将fn函数作用于lsd1中的每一个元素上,
将每次执行的结果存入到一个map对象中返回;
【注意】得到的这个map对象是一个迭代器对象

需求:lt = ['1','2','3','4','5'] --> [1,2,3,4,5]

map(int,lt):执行过程如下:
1).lt --> 取出第一个元素:'1'当做实际参数传递给int函数的形参位置 --> int('1')
    将转换以后的结果:1保留到map对象的第一个元素位置
2).lt --> 取出第二个元素:'2'当做实际参数传递给int函数的形参位置 --> int('2')
    将转换以后的结果:2保留到map对象的第二个元素位置    
以此类推...
直到map函数执行完了,整个map对象才真正成型了... 


2).reduce(fn,lsd):

参数一:fn --> 函数对象
参数二:lsd --> 序列对象

功能:
先将lsd中的第一和第二个元素去除传入到fn中参与运算,
运算后得到结果,再和第三个元素传入到fn中参与运算,
以此类推...

【注意】:
reduce函数属于functools模块中的函数,所以需要显示的先导入functools模块再使用

from functools import reduce


3).filter(fn,lsd):

filter函数:过滤数据的,最终返回一个惰性序列对象(filter对象,迭代器对象)

解释:
filter的意思:在计算机领域中我们都称为过滤器

格式:
filter(fn,lsd):

参数和map、reduce一样理解

功能:
将lsd中的每一个元素都给到fn函数
如果fn函数的返回值为True,那么就保留这个元素到filter对象中
如果fn函数的返回值为False,那么就舍弃这个元素,不会保留到filter对象中
最终filter函数执行完毕了,返回给程序一个filter对象(迭代器对象)

补充:

sorted()函数的使用:

我们将sorted和sort进行一番比较:

相同点:
它们都是来实现排序的操作(功能层面)

不同点:
列表中的sort函数,它执行完毕后会直接影响原本这个list的内部结构(内部的数据发生改变了);
而内置函数sorted函数,它执行完毕后不会影响原本容器中的内部结构,而会返回一个新的列表给程序;

回顾排序:
选择排序,冒泡排序它们的性能都很低下;
意味着开发不会用,但是面试喜欢面(一般开发不用的,面试都喜欢面)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值