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的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
Python内置函数dir详解
Apr 14 Python
Python实现豆瓣图片下载的方法
May 25 Python
python开发利器之ulipad的使用实践
Mar 16 Python
python3中int(整型)的使用教程
Mar 23 Python
python实现12306火车票查询器
Apr 20 Python
Python使用asyncio包处理并发详解
Sep 09 Python
Python2.7版os.path.isdir中文路径返回false的解决方法
Jun 21 Python
Golang GBK转UTF-8的例子
Aug 26 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
Django+boostrap 美化admin后台的操作
Mar 11 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 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操作xml代码
2010/06/17 PHP
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
理解JavaScript的prototype属性
2012/02/11 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
javascript操作符"!~"详解
2015/02/10 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
深入理解JavaScript 箭头函数
2019/05/30 Javascript
用VsCode编辑TypeScript的实现方法
2020/05/07 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
python getopt 参数处理小示例
2009/06/09 Python
Python使用MD5加密字符串示例
2014/08/22 Python
python基础之入门必看操作
2017/07/26 Python
python3中获取文件当前绝对路径的两种方法
2018/04/26 Python
python实现flappy bird游戏
2018/12/24 Python
Python 20行简单实现有道在线翻译的详解
2019/05/15 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python之openpyxl模块的安装和基本用法(excel管理)
2021/02/03 Python
泰国网上购物:Shopee泰国
2018/09/14 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
Diptyque英国官方网站:源自法国的知名香氛品牌
2019/08/28 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
校长岗位职责
2013/11/26 职场文书
2014年度党员自我评议
2014/09/13 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS