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解析模块(ConfigParser)使用方法
Dec 10 Python
python使用urlparse分析网址中域名的方法
Apr 15 Python
python实现人脸识别经典算法(一) 特征脸法
Mar 13 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
django js实现部分页面刷新的示例代码
May 28 Python
python判断输入日期为第几天的实例
Nov 13 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 Python
PyQt QListWidget修改列表项item的行高方法
Jun 20 Python
解决Opencv+Python cv2.imshow闪退问题
Apr 24 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
Jul 09 Python
python实现简易名片管理系统
Apr 11 Python
python 字典和列表嵌套用法详解
Jun 29 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
在PHP中使用与Perl兼容的正则表达式
2006/11/26 PHP
php中的MVC模式运用技巧
2007/05/03 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
PHP代码加密的方法总结
2020/03/13 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
jquery 手势密码插件
2017/03/17 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
Javascript中将变量转换为字符串的三种方法
2017/09/19 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
解决在vue+webpack开发中出现两个或多个菜单公用一个组件问题
2017/11/28 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
python操作 hbase 数据的方法
2016/12/18 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
提高EJB性能都有哪些技巧
2012/03/25 面试题
2014年领导班子工作总结
2014/12/11 职场文书
颐和园的导游词
2015/01/30 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python
Python绘制散乱的点构成的图的方法
2022/04/21 Python