python 函数式编程:高阶函数,map/reduce
2017-12-30 21:06
429 查看
python 函数式编程:高阶函数,map/reduce
#函数式编程 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 #(一)高阶函数 f=abs f print(f(-20)) #结果 20 #函数可以赋值给一个变量,即:变量可以指向函数 #那么函数名是什么?函数名其实就是指向函数的变量! #下面的代码,执行后,abs已经不指向求绝对值函数而是一个整数10了。 #后面的abs(-10)将报错,无法执行,必须重启python才可以。 #abs=10 #abs(-10) #一个简单的高阶函数 #所谓高阶函数,即是可以把函数作为其参数传入。 def add(x,y,f): return f(x)+f(y) print(add(-5,6,abs)) #演示高阶函数map()/reduce() #map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次 #作用到序列的每个元素,并把结果作为新的Iterator返回 #比如我们有一个函数f(x)=x^2,要把它作用在一个list[1,2,3,4,5,6,7,8,9]上 def f(x): return x*x r=map(f,[1,2,3,4,5,6,7,8,9]) #Iterator是个迭代器,即是个惰性序列,需要list()函数让它把整个序列计算出来返回一个list print(list(r)) #结果 [1,4,9,16,25,36,49,64,81] #map()作为高阶函数,事实上它把运算规则抽象了。 #再来一个例子,把list所有数字转为字符串 print(list(map(str,[1,2,3,4,5,6,7,8]))) #结果 ['1', '2', '3', '4', '5', '6', '7', '8'] #reduce()函数 #它的效果就是: #reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4) from functools import reduce def fn(x,y): return x*10+y print(reduce(fn,[1,3,5,7,9])) #结果:13579, 即把序列转成了一个整数 #另一个例子,实现int()函数的功能 def str2int(s): def fn(x,y): return x*10+y def char2num(s): return {'0':0,'1':1,'2':2,'3':3,'4':4, '5':5,'6':6,'7':7,'8':8,'9':9}[s] return reduce(fn,map(char2num,s)) print(str2int('784533')) #结果 784533 #还可以用lambda函数进一步简化成 def char2num(s): return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s] def str2int(s): return reduce(lambda x,y:x*10+y,map(char2num,s)) print(str2int('743092')) #结果 743092
相关文章推荐
- 2016.4.12Python迭代器,函数式编程,map/reduce高阶函数
- 【Python学习笔记】函数式编程:高阶函数map和reduce
- Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- 王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()
- 王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()
- 【语言工具】Python闭包,装饰器,生成器,偏函数,函数式编程,lamda,map,reduce,filter
- Python 函数式编程之 filter()、map()和reduce()
- Python函数式编程学习:lambda, map, reduce, filter
- python 函数式编程 map、reduce用法
- Python入门 第四天(函数式编程、map、reduce、filter、排序函数、函数返回函数、闭包、匿名函数lambda)
- Python 函数式编程 filter(),map() , reduce()......
- python学习——函数式编程——高阶函数
- Python 高阶函数:map和reduce
- python 高阶函数:map、reduce
- Python高阶函数:filter、map、reduce、lambda
- 数组的map()与reduce()函数式编程技术及详解
- python3 第二十章 - 函数式编程之Higher-order function(高阶函数)
- 【Python学习笔记】函数式编程:高阶函数sorted
- Python函数式编程之Reduce