Python内置函数之filter map reduce介绍


Posted in Python onNovember 30, 2014

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))
Python 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
Python中的对象,方法,类,实例,函数用法分析
Jan 15 Python
Python多线程编程简单介绍
Apr 13 Python
Python实现单词拼写检查
Apr 25 Python
Python基础教程之内置函数locals()和globals()用法分析
Mar 16 Python
Python中的取模运算方法
Nov 10 Python
python并发和异步编程实例
Nov 15 Python
python3使用matplotlib绘制散点图
Mar 19 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
python批量修改ssh密码的实现
Aug 08 Python
python asyncio 协程库的使用
Jan 21 Python
Python Queue模块详解
Nov 30 #Python
Python socket C/S结构的聊天室应用实现
Nov 30 #Python
Python open()文件处理使用介绍
Nov 30 #Python
Python fileinput模块使用介绍
Nov 30 #Python
Python 列表list使用介绍
Nov 30 #Python
Python 字典dict使用介绍
Nov 30 #Python
Python 序列化 pickle/cPickle模块使用介绍
Nov 30 #Python
You might like
thinkPHP中volist标签用法示例
2016/12/06 PHP
PHP中->和=>的含义及使用示例解析
2020/08/06 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
javascript 鼠标拖动图标技术
2010/02/07 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
2014/09/01 Javascript
原生Ajax 和jQuery Ajax的区别示例分析
2014/12/17 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
关于AOP在JS中的实现与应用详解
2019/05/06 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
全面解析Vue中的$nextTick
2020/12/24 Vue.js
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python读写ini文件的方法
2015/05/28 Python
pygame游戏之旅 添加游戏介绍
2018/11/20 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
2018/12/28 Python
Python flask框架post接口调用示例
2019/07/03 Python
python web框架中实现原生分页
2019/09/08 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
学python爬虫能做什么
2020/07/29 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
python requests库的使用
2021/01/06 Python
关于 HTML5 的七个传说小结
2012/04/12 HTML / CSS
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
家长会学生家长演讲稿
2013/12/29 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
党的群众路线教育实践活动批评与自我批评发言稿
2014/10/16 职场文书
电工实训报告总结
2014/11/05 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
美丽心灵观后感
2015/06/01 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
Java Redisson多策略注解限流
2022/09/23 Java/Android