简单了解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的Flask框架下使用sqlalchemy库的简单教程
Apr 09 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
Python中文件I/O高效操作处理的技巧分享
Feb 04 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Python实现的爬取网易动态评论操作示例
Jun 06 Python
Python查找文件中包含中文的行方法
Dec 19 Python
Python实现求两个数组交集的方法示例
Feb 23 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
对Python函数设计规范详解
Jul 19 Python
Python基于execjs运行js过程解析
Nov 27 Python
Elasticsearch 聚合查询和排序
Apr 19 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初学者头疼问题总结
2006/10/09 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
php的array_multisort()使用方法介绍
2012/05/16 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
js获取单选按钮的数据
2006/11/27 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
AngularJS语法详解
2015/01/23 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
js removeChild 方法深入理解
2016/08/16 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
详解VS Code使用之Vue工程配置format代码格式化
2019/03/20 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
python批量提交沙箱问题实例
2014/10/08 Python
Django小白教程之Django用户注册与登录
2016/04/22 Python
浅谈解除装饰器作用(python3新增)
2018/10/15 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
flask 实现token机制的示例代码
2019/11/07 Python
python求numpy中array按列非零元素的平均值案例
2020/06/08 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
Joules官网:女士、男士和儿童服装和鞋类
2018/10/23 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
银行门卫岗位职责
2013/12/29 职场文书
学习型班组申报材料
2014/05/31 职场文书
部门活动策划方案
2014/08/16 职场文书
房屋转让协议书
2014/10/18 职场文书
入党积极分子个人总结
2015/03/02 职场文书
售后服务质量承诺书
2015/04/29 职场文书
Vue3.0中Ref与Reactive的区别示例详析
2021/07/07 Vue.js
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB