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,'':1,'':2,'':3,'':4,
'':5,'':6,'':7,'':8,'':9}[s]
return reduce(fn,map(char2num,s))
print(str2int(''))
#结果 784533 #还可以用lambda函数进一步简化成
def char2num(s):
return {'': 0, '': 1, '': 2, '': 3, '': 4,
'': 5, '': 6, '': 7, '': 8, '': 9}[s]
def str2int(s):
return reduce(lambda x,y:x*10+y,map(char2num,s))
print(str2int(''))
#结果 743092

python 函数式编程:高阶函数,map/reduce的更多相关文章

  1. 函数式编程 高阶函数 map&reduce filter sorted

    函数式编程 纯函数:没有变量的函数 对于纯函数而言:只要输入确定,那么输出就是确定的.纯函数是没有副作用的. 函数式编程:允许把函数本身作为参数传入另一个函数,还允许返回一个函数 高阶函数:一个函数的 ...

  2. python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))

    1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...

  3. Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted

    1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...

  4. python 函数式编程 高阶函数 装饰器

    # -*- coding:gb2312 -*- #coding=utf-8 # 高阶函数 import math def is_sqr(x): y = int(math.sqrt(x)) return ...

  5. Python函数式编程-高阶函数、匿名函数、装饰器、偏函数

  6. 【Python】[函数式编程]高阶函数,返回函数,装饰器,偏函数

    函数式编程高阶函数 就是把函数作为参数的函数,这种抽象的编程方式就是函数式编程.--- - -跳过,不是很理解,汗 - ---

  7. JavaScript高阶函数 map reduce filter sort

    本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 高阶函数            一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数          1.高阶函数之map:   ...

  8. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  9. (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)

    原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...

  10. Python实用笔记 (12)函数式编程——高阶函数

    函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式编程语言. 变量 ...

随机推荐

  1. application.properties详解 --springBoot配置文件

    本文转载:http://blog.csdn.net/lpfsuperman/article/details/78287265###; # spring boot application.propert ...

  2. win10 .net framework 3.5无法安装错误代码0x800F081F

    复制链接:http://download.windowsupdate.com/d/msdownload/update/software/updt/2015/11/microsoft-windows-n ...

  3. QStandardItemModel角色控制及QTreeView添加不同的右键菜单

    http://blog.csdn.net/czyt1988/article/details/26018513

  4. 多线程---再次认识volatile,Synchronize,lock

    在多线程中我们常用的保证共享变量的方法有很多,现在我们介绍其中的一种,volatile,也是效率最高的一种.    一 .volatile的意义:             为了确保共享变量能被正确和一 ...

  5. linux中iptables的用法

    iptables基本操作笔记 一.基本操作 #启动防火墙 service iptables start #停止防火墙 service iptables stop #重启防火墙 service ipta ...

  6. Tomcat介绍 安装jdk 安装Tomcat

    Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发而 ...

  7. vim 编辑器常用命令

    vi 常用命令行 1.vi 模式 a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了. b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作.等按下‘i,I,o ...

  8. Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)

    [Android布局学习系列]   1.Android 布局学习之——Layout(布局)详解一   2.Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)   3.And ...

  9. Node.js版本管理工具 nvm

    1. 下载安装 curl curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash wge ...

  10. [转载]Android 生成keystore,两种方式

    Refer : http://blog.csdn.net/ms03001620/article/details/8490314 一.eclipse 中生成android keystore 建立任意一个 ...