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读取csv文件示例(python操作csv)
Mar 11 Python
Python函数中*args和**kwargs来传递变长参数的用法
Jan 26 Python
Pycharm学习教程(1) 定制外观
May 02 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
​如何愉快地迁移到 Python 3
Apr 28 Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 Python
对Python3中列表乘以某一个数的示例详解
Jul 20 Python
python异常处理、自定义异常、断言原理与用法分析
Mar 23 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
Nov 25 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作的文本留言本的例子(一)
2006/10/09 PHP
php中用加号与用array_merge合并数组的区别深入分析
2013/06/03 PHP
php开发中的页面跳转方法总结
2015/04/26 PHP
PHP检测用户语言的方法
2015/06/15 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
一个javascript参数的小问题
2008/03/02 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
js使用心得分享
2015/01/13 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
JS模拟的Map类实现方法
2016/06/17 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
js实现数字滚动特效
2019/12/16 Javascript
详解ES6中class的实现原理
2020/10/03 Javascript
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
利用Fn.py库在Python中进行函数式编程
2015/04/22 Python
深入学习python的yield和generator
2016/03/10 Python
Python深度优先算法生成迷宫
2018/01/22 Python
对python中的argv和argc使用详解
2018/12/15 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python面试题之列表声明实例分析
2019/07/08 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
法国在线药房:1001Pharmacies
2021/03/07 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
计算机专业毕业生求职信分享
2013/12/24 职场文书
最新奶茶店创业计划书
2014/01/25 职场文书
不假外出检讨书
2014/01/27 职场文书
优秀团员个人事迹材料
2014/01/29 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
公司中层管理培训心得体会
2016/01/11 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server
WINDOWS 64位 下安装配置mysql8.0.25最详细的教程
2022/03/22 MySQL