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 相关文章推荐
用Python的Tornado框架结合memcached页面改善博客性能
Apr 24 Python
在Python中使用列表生成式的教程
Apr 27 Python
使用python实现省市三级菜单效果
Jan 20 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
详解Python中is和==的区别
Mar 21 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
Jul 07 Python
Django自带的加密算法及加密模块详解
Dec 03 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
python爬虫爬取网页数据并解析数据
Sep 18 Python
python-地图可视化组件folium的操作
Dec 14 Python
用python批量移动文件
Jan 14 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
php 中的4种标记风格介绍
2012/05/10 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
Angularjs实现多个页面共享数据的方式
2016/03/29 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
JavaScript 数组的深度复制解析
2016/11/02 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
Angular通过angular-cli来搭建web前端项目的方法
2017/07/27 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python读取csv文件示例(python操作csv)
2014/03/11 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
Python上下文管理器和with块详解
2017/09/09 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Python zip()函数用法实例分析
2018/03/17 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
Python3如何判断三角形的类型
2020/04/12 Python
python语言实现贪吃蛇游戏
2020/11/13 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
银行存款证明样本
2014/01/17 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
中班下学期幼儿评语
2014/12/30 职场文书
anaconda python3.8安装后降级
2021/06/11 Python
PHP实现两种排课方式
2021/06/26 PHP
python识别围棋定位棋盘位置
2021/07/26 Python