python函数式编程-----序列处理函数:map(),filter(),reduce()

原创 2016年08月29日 16:29:39

map(function, sequence[, ...]) → list

创建一个新的列表,函数作用于原来列表中的每个元素

>>> map( int, [ "10", "12", "14", 3.1415926, 5L ] )
[10, 12, 14, 3, 5]

这个函数等效下面这个定义:

def map(function, sequence):
    return [function(v) for v in sequence]

map函数可以接收多个序列,如果是这种情况的话,function必须接收多个参数,参数的个数必须和序列的个数保持一致.如果function=None, 那么返回的列表是有tuple构成的列表

>>>map(None, range(3), range(3))
[(0, 0), (1, 1), (2, 2)]

filter(function, sequence) → list

返回列表对象,它的sequence元素中作用在function函数中返回True的元素,如果function是None,那么就是sequence中元素等于True的元素.它的行为定义类似于:

def filter( aFunction, aSequence ):
    return [ v for v in aSequence if aFunction(v) ]

例子:

>>> import random
>>> rolls = list( (random.randint(1,6),random.randint(1,6)) for u in range(100) )
>>> def hardways( pair ):
...     d1, d2 = pair
...     return d1 == d2 and d1+d2 in ( 4, 6, 8, 10 )
>>> filter( hardways, rolls )
[(4, 4), (5, 5), (2, 2), (5, 5), (4, 4), (5, 5), (5, 5), (3, 3), (2, 2), (2, 2), (5, 5), (4, 4)]
>>> len(_)
12

reduce(function, sequence[, initial=0]) → value

function必须接收两个参数, function在内部累加sequence中的每个元素,到最后变成一个单一的value.

def reduce( aFunction, aSequence, init= 0 ):
    r= init
    for s in aSequence:
        r= aFunction( r, s )
    return r

例子:

>>> def plus( a, b ):
...     return a+b
>>> reduce( plus, [1, 3, 5, 7, 9] )
25

python的built-in函数中如:sum(),any(),all()都是类似的reduce函数.

zip(sequence[, sequence...]) → sequence

zip接收的参数都是序列,他把多个序列便成一个序列,新序列是tuple的集合.如果其中一个序列太长那就就会被截取.
例子:

>>> zip( range(5), range(1,12,2) )
[(0, 1), (1, 3), (2, 5), (3, 7), (4, 9)]

这个例子中,前面序列range(5)的长度是5, 后面序列的长度是6,最终长的序列会被截取掉. 当map的地一个参数function是None时,其功能与zip类似,但是map不是截取,而是对较短的序列用None填充.

>>> map(None, range(5), range(1,12,2))
[(0, 1), (1, 3), (2, 5), (3, 7), (4, 9), (None, 11)]

相关文章推荐

Python 函数式编程之 filter()、map()和reduce()

上篇文章中说到lambda 的用法,再来看下其它几个类似功能的函数:filter()、map()、reduce()...

python中的函数式编程——apply, filter, map, reduce

什么是函数式编程?没有深入了解过,Scala就是函数式编程的语言,暂时可以把lambda当做是函数式编程 python有几个内建函数——apply, filter, map, reduce,这些函数的...

python中函数式编程map、reduce、filter的用法

python中函数式编程map、reduce、filter的用法 reduce函数 map函数 filter函数 lambda函数 综合函数式编程代码块代码块语法遵循标准pyhton代码,例如:fro...

Python函数式编程学习:lambda, map, reduce, filter

以前也学过函数式编程,基本也就是函数嵌套,没有深入学习。最近重写代码,重新学习了函数式编程,所以写了这篇blog。     首先介绍下函数式编程的定义:来自维基百科点击打开链接     函数式编程(F...

Python函数式编程(高阶函数、map()、reduce()、filter()、sorted()、lambda、decorator装饰器)

1.函数式概念函数式: functional 一种编程范式。 函数式编程的特点: 1.把计算视为函数而非指令 2.春函数式编程:不需要变量,没有变量,测试简单 3.支持高阶函数,代码简洁 Python...

Python 函数式编程(高阶函数、把函数作为参数、map()函数、reduce()函数、filter()函数、自定义排序函数、函数返回函数、闭包、匿名函数、装饰器decorator)

一、函数式编程 什么是函数式编程? 函数:function 函数式:functional 函数不等于函数式,好比计算不等于计算机   函数式编程的特点: 把计算视为函数而非指令 纯函数...

Python函数式编程——map()、reduce()

原文链接 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理大规模海量数据,并在之后广泛的应用于Googl...

Python 高阶 Python函数式编程以及高阶函数reduce,sorted,filter

#coding=utf-8 #python函数式编程 #求绝对值函数abs #变量可以指向一个函数 print abs(-1) #1 abs=len list=[1,2,3] print abs(l...

JavaScript中函数式编程的体现--map和reduce

这两个函数都在某种程度上体现了函数式编程的思想,即将函数作为传入另一个函数的参数。map()方法的调用者一般是个数组,参数是一个函数,称为callback,返回值是一个由原数组中每个元素执行给定cal...
  • Pwiling
  • Pwiling
  • 2016年07月08日 13:09
  • 1888

Java FP: Java中函数式编程的Map和Fold(Reduce)

http://ifeve.com/functional-programming-with-map-and/ 原文链接 作者:  Cyrille Martraire  译者: 李璟(jle...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python函数式编程-----序列处理函数:map(),filter(),reduce()
举报原因:
原因补充:

(最多只允许输入30个字)