简单了解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装饰器 免去调用父类构造函数的麻烦
May 18 Python
Python深入学习之特殊方法与多范式
Aug 31 Python
初步理解Python进程的信号通讯
Apr 09 Python
通过数据库向Django模型添加字段的示例
Jul 21 Python
python批量替换页眉页脚实例代码
Jan 22 Python
详解Python3的TFTP文件传输
Jun 26 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
Python实现带参数的用户验证功能装饰器示例
Dec 14 Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
python全栈知识点总结
Jul 01 Python
为什么从Python 3.6开始字典有序并效率更高
Jul 15 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 socke 向指定页面提交数据
2008/07/23 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
2018/05/29 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
html a标签-超链接中confirm方法使用介绍
2013/01/04 Javascript
浅谈JavaScript之事件绑定
2013/07/08 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
js实现日期级联效果
2014/01/23 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
jQuery选择器中的特殊符号处理方法
2017/09/08 jQuery
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
Vue路由对象属性 .meta $route.matched详解
2019/11/04 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
[02:49]DAC2018决赛日TOP5 LGD开启黑暗之门绝杀VP
2018/04/08 DOTA
python3 与python2 异常处理的区别与联系
2016/06/19 Python
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
python3 下载网络图片代码实例
2019/08/27 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
实习生自我评价
2014/01/18 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
爱护草坪标语
2014/06/24 职场文书
公司总经理助理岗位职责
2014/07/09 职场文书
读书笔记格式
2015/07/02 职场文书
趣味运动会新闻稿
2015/07/17 职场文书