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写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
跟老齐学Python之有容乃大的list(2)
Sep 15 Python
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
Nov 05 Python
Python三元运算实现方法
Jan 12 Python
Python中tell()方法的使用详解
May 24 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
Python多线程爬虫简单示例
Mar 04 Python
python读写json文件的简单实现
Apr 11 Python
python实现生成字符串大小写字母和数字的各种组合
Jan 01 Python
python实现接口并发测试脚本
Jun 25 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
PHP 常用时间函数资料整理
2016/10/22 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
js 为label标签和div标签赋值的方法
2013/08/08 Javascript
Jquery遍历checkbox获取选中项value值的方法
2014/02/13 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
js类定义函数时用prototype与不用的区别示例介绍
2014/06/10 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
jQuery动画出现连续触发、滞后反复执行的解决方法
2015/01/28 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
vue实现word,pdf文件的导出功能
2018/07/31 Javascript
如何在微信小程序中实现Mixins方案
2019/06/20 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
深入解析Python中的list列表及其切片和迭代操作
2016/03/13 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
Python for循环与range函数的使用详解
2019/03/23 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
旅游管理专业学生求职信
2013/09/28 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
讲文明树新风演讲稿
2014/05/12 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
简单介绍Python的第三方库yaml
2021/06/18 Python