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中的join()函数的用法
Apr 07 Python
玩转python爬虫之URLError异常处理
Feb 17 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
彻底理解Python list切片原理
Oct 27 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
pytorch索引查找 index_select的例子
Aug 18 Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
Jupyter Notebook 如何修改字体和大小以及更改字体样式
Jun 03 Python
Django框架中视图的用法
Jun 10 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
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP学习笔记之三 数据库基本操作
2011/01/17 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
基于jquery的文章中所有图片width大小批量设置方法
2013/08/01 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
jQuery hover事件简单实现同时绑定2个方法
2016/06/07 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
使用SVG基本操作API的实例讲解
2017/09/14 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
openlayers实现地图弹窗
2020/09/25 Javascript
Python高效编程技巧
2013/01/07 Python
python中的格式化输出用法总结
2016/07/28 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
Django中Model的使用方法教程
2018/03/07 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
jupyter notebook中美观显示矩阵实例
2020/04/17 Python
python软件都是免费的吗
2020/06/18 Python
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
入党自我评价优缺点
2014/01/25 职场文书
会计专业自我评价
2014/02/12 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
关于安全的演讲稿
2014/05/09 职场文书
激励口号大全
2014/06/17 职场文书
公证委托书
2014/08/01 职场文书
2014年后勤工作总结
2014/11/18 职场文书
政审证明范文
2015/06/19 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
电子表的操作介绍说明书
2019/10/28 职场文书
html5表单的required属性使用
2021/07/07 HTML / CSS
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android