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神器对付12306变态验证码
Jan 05 Python
用python找出那些被“标记”的照片
Apr 20 Python
python中模块查找的原理与方法详解
Aug 11 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
解决python 读取 log日志的编码问题
Dec 24 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
浅谈PyTorch中in-place operation的含义
Jun 27 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
Oct 29 Python
Python 实现PS滤镜的旋涡特效
Dec 03 Python
python工具dtreeviz决策树可视化和模型可解释性
Mar 03 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
php实现的顺序线性表示例
2019/05/04 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
js 覆盖和重载 函数
2009/09/25 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
jQuery 遍历map()方法详解
2016/11/04 Javascript
JSP防止网页刷新重复提交数据的几种方法
2016/11/19 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
理解Koa2中的async&await的用法
2018/02/05 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
Python字符串的encode与decode研究心得乱码问题解决方法
2009/03/23 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
圣诞节活动策划方案
2014/06/09 职场文书
销售活动策划方案
2014/08/26 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
英语导游词
2015/02/13 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS