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框架中使用日期和时间的教程
Apr 21 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
pygame实现俄罗斯方块游戏
Jun 26 Python
使用Selenium破解新浪微博的四宫格验证码
Oct 19 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
python__name__原理及用法详解
Nov 02 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
python绘制随机网络图形示例
Nov 21 Python
Python ORM编程基础示例
Feb 02 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 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初学者头疼十四条问题大总结
2008/11/12 PHP
PHP json_encode中文乱码问题的解决办法
2013/09/09 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
jQuery插件slicebox实现3D动画图片轮播切换特效
2015/04/12 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
TF-IDF算法解析与Python实现方法详解
2017/11/16 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
python中count函数简单用法
2020/01/05 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
2020/03/08 Python
Python 面向对象部分知识点小结
2020/03/09 Python
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
承认错误的检讨书
2014/01/30 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
利用Python网络爬虫爬取各大音乐评论的代码
2021/04/13 Python
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
WCG2010 星际争霸决赛 Flash vs Goojila 1 星际经典比赛回顾
2022/04/01 星际争霸