Python函数式编程,map/reduce,filter和sorted
什么是函数式编程?
- 与面向对象编程(Object-oriented programming)和过程式编程(Procedural programming)并列的编程范式。
- 最主要的特征是,函数是第一等公民,可以定义在函数内外,作为函数参数或返回值,函数的组合。
- 强调将计算过程分解成可复用的函数,典型例子就是
map
方法和reduce
方法组合而成 MapReduce 算法。 - 只有纯的、没有副作用的函数,才是合格的函数。
知乎-什么是函数式编程思维?
函数式编程与命令式编程最大的不同其实在于:
函数式编程关心数据的映射,命令式编程关心解决问题的步骤。
所以函数式编程最重要的是数据的映射,要用数学的思维去解决问题,而不是计算机指令。
map/reduce
map()函数接受一个函数,一个或多个可迭代对象,函数作用于迭代对象的每一个元素上并以迭代器返回。
def abs(x):if x > 0:return xreturn -x#map()返回迭代器,惰性,需要list转化一下 a = list(map(abs,[-1,-6,7,10])) >>>a [1,6,7,10] ####求两个list元素的对应乘积返回list def sub(x,y): return x * y a = list(map(sub,[1,2,3],[4,5,6])) >>>a [4,10,18]
reduce
Python3已经将reduce()从全局移除,要使用需要从函数与工具导入
>>>from functools import reduce
reduce函数接受的函数必须有两个参数,另一个为list或tuple
从元素开始取两个元素做积累运算
from funtools import reduce def add(x,y):return x + ya = reduce(add,[1,2,3,4,5]) >>>a 15
还可以将list或者tuple转化为整数
from functools import reducedef tra(x,y):return x*10 + ya = reduce(tra,(1,2,3,4,5)) >>>a 12345
map()和reduce()配合使用
from functools import reducedef sq(x):return x * x def add(y,z):return y + za = reduce(add,map(sq,[1,2,3])) >>>a 14
filter过滤器
filter()接受一个函数,一个序列,函数依次作用在每个元素上,保留Ture丢弃FALSE
###只保留正数def filt(x):if x > 0:return x #filter返回迭代器,惰性,需要list转换一下 a = list(map(filt,[-1,-2,3,4]))>>>a [3,4]
sorted
sorted(iterable, key=None, reverse=False)
sorted()函数也是一个高阶函数,key可以接受一个函数作用在每个元素上返回
sorted([2,4,1,3,7]) [1,2,3,4,7]#key接受函数>>>sorted([1,-5,3,-6],key=abs) [-6,-5,1,3] #可以传入第三参数reverse=Ture,默认正序为FALSE实现倒序排序>>>sorted([1,3,5,7,9]reverse=Ture)[9,7,5,3,1] ######sort函数a = [1,0,3,5,4]a.sort()>>>print(a)[0,1,3,4,5]#倒序a = [1,0,3,5,4]a.sort(reverse = True)>>>print(a)[5,4,3,1,0]如果需要一个list副本,不要使用赋值方法,这样得到的副本还是原来的list,在内存中指向同一个地址要使用切片操作,才能得到新的副本
转载于:https://www.cnblogs.com/mzc1997/p/7613054.html
Python函数式编程,map/reduce,filter和sorted相关推荐
- Python函数式编程-map/reduce
1.map map()传入的第一个参数是f,即函数对象本身. map()函数接收两个参数,一个是函数,一个是Interable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterat ...
- Python函数式编程——map()、reduce()
提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理大规模海量数据,并在之后广泛的应用于Google的各项应用中,2006年A ...
- python map reduce filter_Python map, reduce, filter和sorted
map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x): ...
- Python map, reduce, filter和sorted
map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x):r ...
- python中sorted函数的用法_Python中map,reduce,filter和sorted函数的使用方法
map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x): ...
- Python 函数式编程Map、Reduce
在函数式语言里,map表示对一个列表(List)中的每个元素做计算,reduce表示对一个列表中的每个元素做迭代计算.它们具体的计算是通过传入的函数来实现的,map和reduce提供的是计算的框架. ...
- 函数式编程Map()Reduce()
1.forEach():每个元素都调用指定函数,可传三个参数:数组元素丶元素索引丶数组本身丶var a = [1, 2, 3, 4, 5, 6, 7, 8]; a.forEach(function(v ...
- py函数式编程(高阶函数map/reduce/filter/sorted、闭包函数/返回函数、匿名函数lamber、@装饰器decorator、偏函数functool.partial())
#py函数式编程.py #高阶函数map/reduce/filter/sorted.闭包函数/返回函数.匿名函数lamber.@装饰器decorator.偏函数functool.partial()# ...
- Python函数式编程-map()、zip()、filter()、reduce()、lambda()
三个函数比较类似,都是应用于序列的内置函数.常见的序列包括list.tuple.str map函数 map函数会根据提供的函数对指定序列做映射. map函数的定义: map(function, seq ...
最新文章
- 清华成立视觉智能研究中心,邓志东任中心主任
- Atitit .linux 取回root 密码q99
- 运维一定要懂的100个网络安全小知识
- 被遗忘和庸俗化的弗洛伊德:纪念弗洛伊德诞辰150周年(全文)
- 2018.3.30 边框应用与导航栏设置
- CSS:hover伪类使用
- C/C++ 进程间通信 管道
- 首届电子商务AI算法大赛 Organized by automlai
- Sql Prompt安装图文教程
- 计算机网络机房巡视表,机房巡查记录表.doc
- nbu 7.5备份oracle,NBU7.5备份oracle
- duilib菜单动态添加
- 服务器下安装windows操作系统---宝德服务器
- 第六章代码的问题——基于DirectX11的3D图形程序设计案例教程——重庆大学出版社
- 使用PHP获取图像文件的EXIF信息
- c语言课程设计 雪花飘落,c雪花飘落课程设计.doc
- IOS生物信息验证(Touch IDFace ID)
- ppm调制matlab程序,求助:谁能帮我编写一个4ppm的解调程序 谢谢了
- c语言难学吗?怎么学C语言?
- 数据挖掘时功能和一个聚类分析应用案例
热门文章
- android 中xml解析方式
- javaWeb项目中web.xml的xsd( XML Schemas Definition)文件
- c/c++函数指针(3)
- WCF我应该再深入一些
- windows和linux的共享
- VC98\mfc\lib' specified in 'LIB environment variable' 系统找不到指定路径
- [ILINK32 Error] Error: Unresolved external 'WSAIoctl'
- Spring源码学习笔记:经典设计模式之代理模式
- LeetCode 513. Find Bottom Left Tree Value
- 1031. Hello World for U (20)-PAT甲级真题