简单了解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命令行传递实例化对象的方法
Nov 02 Python
Python绘制3D图形
May 03 Python
windows下安装Python的XlsxWriter模块方法
May 03 Python
python对离散变量的one-hot编码方法
Jul 11 Python
python学习之hook钩子的原理和使用
Oct 25 Python
使用python绘制3维正态分布图的方法
Dec 29 Python
python进程池实现的多进程文件夹copy器完整示例
Nov 27 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
浅析PyCharm 的初始设置(知道)
Oct 12 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
python dir函数快速掌握用法技巧
Dec 09 Python
举例讲解Python装饰器
Dec 24 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
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
Thinkphp框架中D方法与M方法的区别
2016/12/23 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
网页里控制图片大小的相关代码
2006/06/13 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
多选列表框动态添加,移动,删除,全选等操作的简单实例
2014/01/13 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
javascript中Object使用详解
2015/01/26 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
ES6新数据结构Set与WeakSet用法分析
2017/03/31 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
python中redis查看剩余过期时间及用正则通配符批量删除key的方法
2018/07/30 Python
Python rstrip()方法实例详解
2018/11/11 Python
django认证系统 Authentication使用详解
2019/07/22 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
vue项目实现分页效果
2021/03/24 Vue.js
上课玩手机检讨书
2014/02/08 职场文书
逃课上网检讨书
2014/02/20 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
卖车协议书
2014/04/21 职场文书
村官2015年度工作总结
2015/10/14 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
spring boot中nativeQuery的用法
2021/07/26 Java/Android