Python内置了一些非常有趣、有用的函数,如:filter、map、reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车。
1. filter函数的功能相当于过滤器。调用一个布尔函数bool_func来迭代遍历每个seq中的元素;返回一个使bool_seq返回值为true的元素的序列。
> N=range(10) > print filter(lambda x:x>5,N) [6, 7, 8, 9]
2. map函数func作用于给定序列的每个元素,并用一个列表来提供返回值。
> N1=[1,2,3] > N2=[6,5,4] > map(lambda x,y:x+y,N1,N2) [7, 7, 7] > map(lambda x:x+3,N1) [4, 5, 6]
3. reduce函数,func为二元函数,将func作用于seq序列的元素,每次携带一对(先前的结果以及下一个序列的元素),连续的将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值。
> N=range(1,101) > reduce(lambda x,y:x+y,N) 5050
例1:用map和reduce实现5的阶乘相加(5!+4!+3!+2!+1!)
>print reduce(lambda x,y:x*y,range(1,6)) >print reduce(lambda x,y:x*y,range(1,5)) >print reduce(lambda x,y:x*y,range(1,4)) >print reduce(lambda x,y:x*y,range(1,3)) >print reduce(lambda x,y:x*y,range(1,2)) '''
结果为
120 24 6 2 1 '''
#把上一步的结果变成一个阶乘列表
>print map(lambda a:reduce(lambda x,y:x*y,range(1,a+1)),range(1,6)) [1, 2, 6, 24, 120]
#最后把阶乘列表相加,第一题解决
>print reduce(lambda m,n:m+n,map(lambda a:reduce(lambda x,y:x*y,range(1,a+1)),range(1,6))) 153
例2:用filter将100~200以内的质数过滤出来
质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数
>filter(lambda N:len(filter(lambda M:N%M==0,range(2,int(N**0.5)+1)))==0,range(100,201))
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“Python内置函数之filter map reduce介绍”评论...
更新日志
2024年12月27日
2024年12月27日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]