简单了解python filter、map、reduce的区别


Posted in Python onJanuary 14, 2020

这篇文章主要介绍了简单了解python filter、map、reduce的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

python中有一些非常有趣的函数,面试的时候可能会遇到。今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理。

lambda 为关键字。filter,map,reduce为内置函数。

lambda:实现python中单行最小函数。

g = lambda x: x * 2 
#相当于
def g(x):
  return x*2
  • filter(function, sequence): 对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)。
  • filter(function or None, sequence) -> list, tuple, or string:入参为函数和列表/元组/字符串,返回值为item列表/元组/字符串。
  • map(function, sequence) : 对sequence中的item依次执行function(item),将执行结果function(item)组成一个List返回。map(function, sequence[, sequence, ...]) -> list:入参是为函数和列表/元组/字符串,返回值为function(item)列表。

reduce(function, sequence, starting_value): 对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用。function接收的参数个数只能为2,先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给function,然后只返回一个结果。

reduce(function, sequence[, initial]) -> value:入参是为函数和列表/元组/字符串和初始值,返回值为数值。

用法举例:

#coding=utf-8
#1.lambda用法,冒号之前的是入参,冒号之后的是表达式,返回的值,最简单的函数
print [(lambda x:x*x)(x)for x in range(11)]
#结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
print (lambda x:x*x)(3)
#结果:9
g=lambda x:x*x
print g(4)
#结果:16

#2.filter用法:返回执行结果为TRUE的入参(入参是列表字符元组)
print filter(lambda x:x*x-4,range(10))
#结果:[0, 1, 3, 4, 5, 6, 7, 8, 9]

#3.map的用法:对列表入参依次执行函数。入参为列表,有多少个列表,就应该有多少个入参。
print map(lambda x:x*x-4,range(10))
#结果:[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]
print map(lambda x,y:x*y-4,range(3),[8,9,10])
#结果:[-4, 5, 16]

#4.reduce用法:先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给fuction,最终返回一个结果值
#接收的入参个数只能为2
print reduce(lambda x,y:x*y-4,range(4))
#结果:-40
#计算0到100的和
print reduce(lambda x,y:x+y, range(101))
#结果:5050
print reduce(lambda x,y:x+y, range(101),100)
#结果:5150

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
python实现微信远程控制电脑
Feb 22 Python
Python2中文处理纪要的实现方法
Mar 10 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Python下利用BeautifulSoup解析HTML的实现
Jan 17 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
Feb 27 Python
python with语句的原理与用法详解
Mar 30 Python
Python利用for循环打印星号三角形的案例
Apr 12 Python
python如何进行矩阵运算
Jun 05 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
python中__slots__节约内存的具体做法
Jul 04 Python
Python vtk读取并显示dicom文件示例
Jan 13 #Python
Python解析多帧dicom数据详解
Jan 13 #Python
python 将dicom图片转换成jpg图片的实例
Jan 13 #Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 #Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 #Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 #Python
如何基于Python + requests实现发送HTTP请求
Jan 13 #Python
You might like
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP安全配置
2006/10/09 PHP
来自phpguru得Php Cache类源码
2010/04/15 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
A标签触发onclick事件而不跳转的多种解决方法
2013/06/27 Javascript
jquery实现很酷的网页顶部图标下拉菜单效果
2015/08/22 Javascript
js实现二级菜单渐隐显示
2015/11/03 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
JavaScript获取tr td 的三种方式全面总结(推荐)
2017/08/15 Javascript
js实现登录与注册界面
2017/11/01 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python中协程用法代码详解
2018/02/10 Python
python 实现提取某个索引中某个时间段的数据方法
2019/02/01 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
DNA基因检测和分析:23andMe
2019/05/01 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
高中毕业生自我鉴定例文
2013/12/29 职场文书
高中综合实践活动总结
2014/07/07 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
教师节主持词开场白
2015/05/29 职场文书
食堂卫生管理制度
2015/08/04 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
java如何实现socket连接方法封装
2021/09/25 Java/Android