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实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
python妹子图简单爬虫实例
Jul 07 Python
Python实现字典依据value排序
Feb 24 Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 Python
在python中使用xlrd获取合并单元格的方法
Dec 26 Python
深入浅析Python中的迭代器
Jun 04 Python
Pytorch之contiguous的用法
Dec 31 Python
Jupyter notebook如何修改平台字体
May 13 Python
Python的轻量级ORM框架peewee使用教程
Feb 05 Python
Python中相见恨晚的技巧
Apr 13 Python
Python 如何将integer转化为罗马数(3999以内)
Jun 05 Python
简单谈谈Python面向对象的相关知识
Jun 28 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
DSP接收机前端设想
2021/03/02 无线电
php 用sock技术发送邮件的函数
2007/07/21 PHP
php中使用url传递数组的方法
2015/02/11 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
使用js简单实现了tree树菜单
2013/11/20 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
vue地区选择组件教程详解
2018/05/04 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
JavaScript中的null和undefined用法解析
2019/09/30 Javascript
[01:11:10]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG加赛
2014/05/26 DOTA
采用python实现简单QQ单用户机器人的方法
2014/07/03 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
英语系毕业生自荐信
2013/10/31 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
同意报考证明
2015/06/17 职场文书
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python