文档章节

零基础学python-18.10 函数式编程工具:filter和reduce

raylee2015
 raylee2015
发布于 2015/10/21 08:10
字数 513
阅读 4
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

这一章节我们来讨论一下函数式编程工具:filter和reduce

1.filter

filter主要用于过滤序列的某些对象

>>> def test(x):
	if x>0:
		return x

	
>>> list(filter(test,range(-5,5)))
[1, 2, 3, 4]
>>>

上面是filter联合def函数,过滤列表小于0的对象

我们使用lambda表达式改进上面的代码

>>> list(filter(lambda x:x>0,range(-5,5)))
[1, 2, 3, 4]
>>>

由于filter跟map类似都是返回一个可迭代对象,因此都需要通过list来显示

我们下面尝试模拟filter的实现:

>>> def test(aList):
	res=[]
	for item in aList:
		if item > 0:
			res.append(item)
	return res

>>> test(range(-5,5))
[1, 2, 3, 4]
>>>

由于filter是内建函数,因此速度比上面的for要来得快


2.reduce

reduce主要用于对每对对象进行运算,直到最后结果,在python3.x里面reduce已经被放到functools模块里面去

>>> from functools import reduce
>>> reduce((lambda x ,y : x+y),[1,2,3,4])
10
>>> reduce((lambda x ,y : x*y),[1,2,3,4])
24
>>> reduce((lambda x ,y : x/y),[1,2,3,4])
0.041666666666666664
>>>

我们下面模拟上面reduce的实现,使得大家有一个更加直观的理解

>>> aList=[1,2,3,4]
>>> def add(aList):
	if not aList:
		return 0
	else:		
		return aList[0]+test(aList[1:])

	
>>> test(aList)
10
>>> def muti(aList):
	if not aList:
		return 0
	else:		
		return aList[0]*test(aList[1:])

	
>>> test(aList)
10
>>>

大家是不是觉得上面很熟悉,其实在递归的时候我们就已经详细说明了上面的函数,有兴趣的可以返回去看看递归这一章节。

reduce其实就是对序列里面每对对象进行操作,然后返回操作的结果,形成新的对象,知道对象只剩下一个,形成最后的结果。


总结,这一章节我们简单介绍了filter和reduce,并且模拟了这两个内建函数的大部分实现。


这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录



版权声明:本文为博主原创文章,未经博主允许不得转载。

本文转载自:http://blog.csdn.net/raylee2007/article/details/48637329

raylee2015
粉丝 6
博文 265
码字总数 44224
作品 0
江门
私信 提问
加载中

评论(0)

基于编程人员Python学习第一章节

基于廖雪峰的python零基础学习后,自我总结。适用于有一定基础的编程人员,对我而言,则是基于.net已有方面,通过学习,记录自我觉得有用的地方,便于后续回顾。 主要以快速定位内容,通过直...

Aikenwu
2018/08/13
0
0
Python函数式编程(高阶函数 返回函数 匿名函数 装饰器 偏函数)

函数式编程 将业务逻辑细化,抽象,封装成一个个功能函数,并借助语言自带的高阶函数api,将整个业务流程转化为函数之间的相互调用,这就是函数式编程。 对比:将业务逻辑细化,抽象,封装成...

_best
03/31
0
0
python中lambda函数的理解与使用

Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction)。 入门P...

奋斗的小炎
03/31
0
0
编程零基础应该如何开始学习Python?

  编程零基础应该如何开始学习Python?其实在参加Python培训的同学中,就有很多零基础的同学。这类同学最担心的问题就是:零基础学习Python难度大吗?学完之后好就业吗?在这个两个问题得到肯...

好程序员
04/16
0
0
Python - 进阶(持续更新 ing)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/qq39437555/article/details/93867588 文章目录 Python - 面向对象 ...

桃子味儿的汽水~
2019/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

二、netcore跨平台之 Linux部署nginx代理webapi

原文: 二、netcore跨平台之 Linux部署nginx代理webapi 上一章,我们讲了在linux上安装netcore环境,以及让netcore在linux上运行。 这一章我们开始讲在linux上配置nginx,以及让nginx反向代理...

osc_jo2m8l1r
27分钟前
17
0
CAD怎么转PDF文件?使用这款编辑器一键转换、批量转换

CAD怎么转换成PDF文件呢?小伙伴们不妨使用这款CAD编辑器,把CAD文件一键、批量转换成PDF文件哦。 有许多小伙伴应该都知道,为了满足各种学习、工作的需求,文件之间是经常需要相互转换格式的...

真不莲
27分钟前
19
0
详解Microsoft.AspNetCore.CookiePolicy

原文: 详解Microsoft.AspNetCore.CookiePolicy 详解Asp.Net Core中的Cookie策略 目录 详解Asp.Net Core中的Cookie策略 功能介绍 使用Cookie策略 从UseCookiePolicy方法入手 实现IResponseCo...

osc_0vd38ylb
29分钟前
16
0
怎么找到自己收藏过的思维导图模板?迅捷画图教你详细步骤!

怎么找到自己收藏过的思维导图模板?大家在刷视频的时候,遇到自己喜欢的视频,都会点个微信或者关注,用电脑看网页的时候,遇到有意思的网站,也会点击添加书签进行收藏,方便以后阅读或者是...

赛利亚大姐大
30分钟前
10
0
Microsoft.AspNetCore.Authentication.Cookies从入门到精通 (一)

原文: Microsoft.AspNetCore.Authentication.Cookies从入门到精通 (一) Microsoft.AspNetCore.Authentication.Cookies从入门到精通 (一) 目录 Microsoft.AspNetCore.Authentication.Cook......

osc_t5nbj8ds
30分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部