python 函数式编程:高阶函数,map/reduce
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的更多相关文章
- 函数式编程 高阶函数 map&reduce filter sorted
函数式编程 纯函数:没有变量的函数 对于纯函数而言:只要输入确定,那么输出就是确定的.纯函数是没有副作用的. 函数式编程:允许把函数本身作为参数传入另一个函数,还允许返回一个函数 高阶函数:一个函数的 ...
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. ...
- Python 函数式编程 & Python中的高阶函数map reduce filter 和sorted
1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数 ...
- python 函数式编程 高阶函数 装饰器
# -*- coding:gb2312 -*- #coding=utf-8 # 高阶函数 import math def is_sqr(x): y = int(math.sqrt(x)) return ...
- Python函数式编程-高阶函数、匿名函数、装饰器、偏函数
- 【Python】[函数式编程]高阶函数,返回函数,装饰器,偏函数
函数式编程高阶函数 就是把函数作为参数的函数,这种抽象的编程方式就是函数式编程.--- - -跳过,不是很理解,汗 - ---
- JavaScript高阶函数 map reduce filter sort
本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 高阶函数 一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数 1.高阶函数之map: ...
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...
- (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)
原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...
- Python实用笔记 (12)函数式编程——高阶函数
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式编程语言. 变量 ...
随机推荐
- HTML5/CSS3实现五彩进度条应用
今天要介绍的是一款基于HTML5和CSS3的进度条应用,这款进度条是静态的,仅提供进度条的五彩外观.当然你可以在CSS中动态设置进度值来让其变得动态,一个很好的实现方式是利用jQuery动态改变CSS ...
- PostgreSQL安装入门教程
一.安装 首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get ins ...
- UITextView: 响应键盘的 return 事件
UITextFieldDelegate代理里面响应return键的回调:textFieldShouldReturn:.但是 UITextView的代理UITextViewDelegate 里面并没有这 ...
- 有术:DIY代理服务器
FQ有术:DIY代理服务器 公司HTTP代理穿透+手機ShadowSocks+SSH翻牆 利用SSH代理爬墙 http://bestvpnchina.net/
- java新手的session初体验
众所周知,session作为保存我们用户对话所需要的信息的对象,在我们的项目中必不可少.作为菜鸟学习java的第一课就是了解它的思想和用法,在以后的学习中,逐渐学习和总结,从基础到高级,慢慢学会应用. ...
- Java程序员的IntelliJ IDEA使用教程
前言 博主是Java程序员,以前一直都用myeclipse来开发的,说实话感觉myeclipse毫无美感可言,后来经过同事介绍,认识了IDEA,一眼就相中了IDEA黑色的主题风格,自此就抛弃了旧爱my ...
- JSP输出当前日期
如何在网页中动态交互,输出当前日期? <%@ page language="java" import="java.util.*" contentType= ...
- docker 相关文章
https://baijiahao.baidu.com/s?id=1581420975184566963&wfr=spider&for=pc 创建centos基础镜像 https ...
- [Bayes] What is Sampling
Ref: http://blog.csdn.net/xianlingmao/article/details/7768833 通常,我们会遇到很多问题无法用分析的方法来求得精确解,例如由于式子特别,真的 ...
- 双调旅行商问题 (Bitonic TSP)
问题描写叙述: 上述问题能够使用动态规划的方法来解决. 以下是解决思路的详细介绍: 1. 最优子结构: 如果d[i][j]表示从起点1出发到达i及j两个顶点的最短路程之和. 为此能够如果K为此段路程上 ...