python 函数式编程:高阶函数,map/reduce

 1 #函数式编程
 2 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数
 3 #(一)高阶函数
 4
 5 f=abs
 6 f
 7 print(f(-20))
 8 #结果  20
 9 #函数可以赋值给一个变量,即:变量可以指向函数
10 #那么函数名是什么?函数名其实就是指向函数的变量!
11
12 #下面的代码,执行后,abs已经不指向求绝对值函数而是一个整数10了。
13 #后面的abs(-10)将报错,无法执行,必须重启python才可以。
14 #abs=10
15 #abs(-10)
16
17 #一个简单的高阶函数
18 #所谓高阶函数,即是可以把函数作为其参数传入。
19 def add(x,y,f):
20     return  f(x)+f(y)
21
22 print(add(-5,6,abs))
23
24 #演示高阶函数map()/reduce()
25 #map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次
26 #作用到序列的每个元素,并把结果作为新的Iterator返回
27 #比如我们有一个函数f(x)=x^2,要把它作用在一个list[1,2,3,4,5,6,7,8,9]上
28
29 def f(x):
30     return  x*x
31 r=map(f,[1,2,3,4,5,6,7,8,9])
32 #Iterator是个迭代器,即是个惰性序列,需要list()函数让它把整个序列计算出来返回一个list
33 print(list(r))
34 #结果 [1,4,9,16,25,36,49,64,81]
35
36 #map()作为高阶函数,事实上它把运算规则抽象了。
37 #再来一个例子,把list所有数字转为字符串
38 print(list(map(str,[1,2,3,4,5,6,7,8])))
39 #结果  [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘]
40
41 #reduce()函数
42 #它的效果就是:
43 #reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)
44 from functools import reduce
45 def fn(x,y):
46     return  x*10+y
47
48 print(reduce(fn,[1,3,5,7,9]))
49 #结果:13579, 即把序列转成了一个整数
50
51 #另一个例子,实现int()函数的功能
52 def str2int(s):
53     def fn(x,y):
54         return x*10+y
55     def char2num(s):
56         return {‘0‘:0,‘1‘:1,‘2‘:2,‘3‘:3,‘4‘:4,
57                 ‘5‘:5,‘6‘:6,‘7‘:7,‘8‘:8,‘9‘:9}[s]
58     return reduce(fn,map(char2num,s))
59 print(str2int(‘784533‘))
60 #结果  784533
61
62 #还可以用lambda函数进一步简化成
63 def char2num(s):
64     return {‘0‘: 0, ‘1‘: 1, ‘2‘: 2, ‘3‘: 3, ‘4‘: 4,
65             ‘5‘: 5, ‘6‘: 6, ‘7‘: 7, ‘8‘: 8, ‘9‘: 9}[s]
66 def str2int(s):
67     return reduce(lambda x,y:x*10+y,map(char2num,s))
68 print(str2int(‘743092‘))
69 #结果  743092

原文地址:https://www.cnblogs.com/hackpig/p/8151211.html

时间: 2025-01-31 15:50:16

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

Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted

1.1   高阶函数 变量可指向函数 >>> abs(-10) 10 >>> x = abs    --x指向abs函数 >>> x(-1)      --直接调用x 1 调用abs和调用x完全相同. 函数名也是变量 >>> abs = 10 >>> abs(-10) Traceback (most recent call last): File "<stdin>", line 1,

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

1.1函数式编程 面向过程编程:我们通过把大段代码拆成函数,通过一层一层的函数,可以把复杂的任务分解成简单的任务,这种一步一步的分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 函数式编程:是使用一系列函数去解决问题,函数式编程就是根据编程的范式来的出想要的结果,只要是输入时确定的,输出就是确定的. 1.2高阶函数 能把函数作为参数传入,这样的函数就称为高阶函数. 1.2.1函数即变量 以python的内置函数print()为列,调用该函数一下代码 >>> pri

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

1. 函数式编程 1)概念 函数式编程是一种编程模型,他将计算机运算看做是数学中函数的计算,并且避免了状态以及变量的概念.wiki 我们知道,对象是面向对象的第一型,那么函数式编程也是一样,函数是函数式编程的第一型.在面向对象编程中,我们把对象传来传去,那在函数式编程中,我们要做的是把函数传来传去,而这个,说成术语,我们把他叫做高阶函数.飞林沙 2)特点 计算视为视为函数而非指令 纯函数式编程:不需变量,无副作用,测试简单(每次的执行结果是一样的) 支持高阶函数,代码简洁 2. python支持

Python学习之高阶函数——map/reduce

map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. 即map(函数,Iteratable) map()传入的第一个参数是f,即函数对象本身.由于结果r是一个Iterator,Iterator是惰性序列,因此通过list()函数让它把整个序列都计算出来并返回一个list. >>> def f(x): ... return x * x ... >>> r = map(f,

函数式编程—高阶函数

一.函数式编程概念简介 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元 就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言:越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种

JavaScript高阶函数 map reduce filter sort

本文是笔者在看廖雪峰老师JavaScript教程时的个人总结 高阶函数 一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数 1.高阶函数之map: 此时我们有一个数组和一个接受一个参数并返回一个数的函数.我们需要把这个数组的每一个值在这个函数上走一遍,从而得到一个新数组.此时就需要map了 var a = [1,2,3,4,5,6]; var b = [] var fun = function(x) { return x * x; } b = a.map(fun) alert(b)  /

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

函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 而函数式编程(请注意多了一个"式"字)--Functional Programming,虽然也可以归结到面向过程的程序设计,但其思想更接近数学计算. 我们首先要搞明白计算机(Computer)和计算(Compute)的概念. 在计算机的层次上,CPU执行的是加减乘除的指令代码

Python之高阶函数map/reduce

Python内建map()和reduce()函数 map()函数接收两个参数一个是函数一个是一个Iterable(迭代器),并把结果作为新的Iterator(生成器)返回 有一个函数f(x)=x*x作用于序列list[1,2,3,4,5,6,7,8,9] 使用python函数实现 >>> r=map(f,range(1,4)) >>> r <map object at 0x7fcec039ee80> >>> list(r) [1, 4, 9

python学习笔记——高阶函数map()

满足以下两点中任意一点,即为高阶函数: 1.函数接收一个或多个函数作为参数 2.函数返回一个函数 1 描述 用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象 map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. 2 语法 map(function, sequence[, sequence, ...]) function:函数 sequence:一个或多个序

函数式编程--高阶函数--sorted

定义 sorted函数可以list进行排序 #sorted可以对list进行排序 L=[3,7,-11,10,6] print(sorted(L)) sorted()函数也是一个高阶函数,它还可以接收一个key函数来实现自定义的排序,key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序.例如按绝对值大小排序: #接受一个abs,按照绝对值排序 print(sorted(L,key=abs)) 以上两个输出结果为: [-11, 3, 6, 7, 10] [3, 6,