Python 函数式编程 filter(),map() , reduce()......
2015-02-12 16:22
549 查看
1.filter(function, sequence) 返回一个 sequence(序列),包括了给定序列中所有调用 function(item) 后返回值为 true 的元素(如果可能的话,会返回相同的类型)。如果该 序列 (sequence)是一个 string(字符串)或者 tuple (元组),返回值必定是同一类型,否则,它总是 list。例如,以下程序可以计算部分素数:
2.map(function, sequence) 为每一个元素依次调用 function(item) 并将返回值组成一个链表返回。例如,以下程序计算立方:
可以传入多个序列,函数也必须要有对应数量的参数,执行时会依次用各序列上对应的元素来调用函数(如果某些序列比其它的短,就用 None 来代替)。如果把 None 做为一个函数传入,则直接返回参数做为替代。例如:
3.reduce(function, sequence) 返回一个单值,它是这样构造的:首先以序列的前两个元素调用函数function,再以返回值和第三个参数调用,依次执行下去。例如,以下程序计算 1 到 10 的整数之和:
如果序列中只有一个元素,就返回它,如果序列是空的,就抛出一个异常。
可以传入第三个参数作为初始值。如果序列是空的,就返回初始值,否则函数会先接收初始值和序列的第一个元素,然后是返回值和下一个元素,依此类推。例如:
不要像示例中这样定义 sum():因为合计数值是一个通用的需求,早已有内置的 sum(sequence) 函数,非常好用。
>>> def f(x): return x % 2 != 0 and x % 3 != 0 ... >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23]
2.map(function, sequence) 为每一个元素依次调用 function(item) 并将返回值组成一个链表返回。例如,以下程序计算立方:
>>> def cube(x): return x*x*x ... >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
可以传入多个序列,函数也必须要有对应数量的参数,执行时会依次用各序列上对应的元素来调用函数(如果某些序列比其它的短,就用 None 来代替)。如果把 None 做为一个函数传入,则直接返回参数做为替代。例如:
>>> seq = range(8) >>> def add(x, y): return x+y ... >>> map(add, seq, seq) [0, 2, 4, 6, 8, 10, 12, 14]
3.reduce(function, sequence) 返回一个单值,它是这样构造的:首先以序列的前两个元素调用函数function,再以返回值和第三个参数调用,依次执行下去。例如,以下程序计算 1 到 10 的整数之和:
>>> def add(x,y): return x+y ... >>> reduce(add, range(1, 11)) 55
如果序列中只有一个元素,就返回它,如果序列是空的,就抛出一个异常。
可以传入第三个参数作为初始值。如果序列是空的,就返回初始值,否则函数会先接收初始值和序列的第一个元素,然后是返回值和下一个元素,依此类推。例如:
>>> def sum(seq): ... def add(x,y): return x+y ... return reduce(add, seq, 0) ... >>> sum(range(1, 11)) 55 >>> sum([]) 0
不要像示例中这样定义 sum():因为合计数值是一个通用的需求,早已有内置的 sum(sequence) 函数,非常好用。
相关文章推荐
- 【语言工具】Python闭包,装饰器,生成器,偏函数,函数式编程,lamda,map,reduce,filter
- Python函数式编程学习:lambda, map, reduce, filter
- Python入门 第四天(函数式编程、map、reduce、filter、排序函数、函数返回函数、闭包、匿名函数lambda)
- 王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()
- 王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()
- Python 函数式编程之 filter()、map()和reduce()
- python--函数式编程 (高阶函数(map , reduce ,filter,sorted),匿名函数(lambda))
- Python 函数式编程--高阶函数Map、Reduce、Filter、Sorted
- 零基础学python-18.10 函数式编程工具:filter和reduce
- 2016.4.12Python迭代器,函数式编程,map/reduce高阶函数
- python中的函数化编程工具(filter、map、reduce、sum)
- 【Python学习笔记】函数式编程:高阶函数map和reduce
- python函数式编程内建函数filter,map,reduce函数
- python中的函数式编程——apply, filter, map, reduce
- Python高级特性: 函数编程 lambda, filter,map,reduce
- python 函数式编程:高阶函数,map/reduce
- python 函数式编程 map、reduce用法
- Swift函数式编程之Map&Reduce&Filter
- 零基础学python-18.10 函数式编程工具:filter和reduce
- python学习笔记(九)函数式进阶:使用map、reduce、filter、sorted