零基础学python-18.10 函数式编程工具:filter和reduce
2015-09-21 23:22
477 查看
这一章节我们来讨论一下函数式编程工具:filter和reduce
1.filter
filter主要用于过滤序列的某些对象
上面是filter联合def函数,过滤列表小于0的对象
我们使用lambda表达式改进上面的代码
由于filter跟map类似都是返回一个可迭代对象,因此都需要通过list来显示
我们下面尝试模拟filter的实现:
由于filter是内建函数,因此速度比上面的for要来得快
2.reduce
reduce主要用于对每对对象进行运算,直到最后结果,在python3.x里面reduce已经被放到functools模块里面去
我们下面模拟上面reduce的实现,使得大家有一个更加直观的理解
大家是不是觉得上面很熟悉,其实在递归的时候我们就已经详细说明了上面的函数,有兴趣的可以返回去看看递归这一章节。
reduce其实就是对序列里面每对对象进行操作,然后返回操作的结果,形成新的对象,知道对象只剩下一个,形成最后的结果。
总结,这一章节我们简单介绍了filter和reduce,并且模拟了这两个内建函数的大部分实现。
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
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-目录
相关文章推荐
- 零基础学python-18.10 函数式编程工具:filter和reduce
- Pykd——Python extension for WinDbg
- Python编程学习——装饰器
- 新版本的Python问题
- 每日python(9)
- Python 基础---列表
- Python 常用内置函数 (二)
- 这个python用法太优雅,一定要转
- 【Python之旅】第三篇(一):Python函数
- Python进阶
- python 排列相关问题小结
- 按拍摄日期归类照片 一键搞定 Python
- idaPython编写插件
- 【Python之旅】第二篇(九):迭代器
- python笔记-python编程优化:常用原则和技术介绍
- python 与 webdriver结合打开不同浏览器
- Python学习之路——django(一)
- Top K问题用Python求解
- Python异常处理和异常类型
- python 时间