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中的函数式编程——apply, filter, map, reduce

什么是函数式编程?没有深入了解过,Scala就是函数式编程的语言,暂时可以把lambda当做是函数式编程 python有几个内建函数——apply, filter, map, reduce,这些函数的...
  • zhangqi_gsts
  • zhangqi_gsts
  • 2016年03月26日 18:36
  • 727

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

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

不得不知的python高阶函数(Map、Reduce、Filter)

Map函数 map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。 Reduce函数 reduce把一个函数...
  • u010541307
  • u010541307
  • 2016年11月16日 18:52
  • 2573

python几个内置函数之-filter,map,reduce

小弟初学,在看到这几个,写在这里先。 ·filter()函数filter()函数包括两个参数,分别是function和list。该函数根据function参数返回的结果是否为真来过滤list参数中的项...
  • shark0001
  • shark0001
  • 2006年11月02日 21:57
  • 52501

Python3.4中filter函数,map函数和reduce函数

filter函数: filter()为已知的序列的每个元素调用给定的布尔函数,调用中,返回值为非零的元素将被添加至一个列表中 >>> def f1(x): if x > 20: return Tru...
  • damotiansheng
  • damotiansheng
  • 2015年03月08日 22:28
  • 37241

python中的高阶函数map(),reduce(),filter()的区别

map()和reduce()的区别:1.map()中的函数(是指map()两个参数中的函数中的参数,而不是map()的参数)可以传人一个或者多个参数,reduce()中的函数必须接收两个参数 2.ma...
  • goupper1991
  • goupper1991
  • 2015年11月12日 18:52
  • 1994

python函数式编程 map、reduce、filter

1) map函数  a = [1, 2, 3] b = map(lambda x: x+2, a) b = list(b) print(b) #[3, 4, 5]在python 3.x中,map函数...
  • qq_18433441
  • qq_18433441
  • 2017年01月09日 21:42
  • 147

python3中使用map,reduce和filter

前两天突然用到了python3的map,reduce函数,按照之前python2的方式使用,结果发现结果并不是自己想要的,查询了资料之后才发现原来map,reduce和filter三个函数在pytho...
  • LJS109
  • LJS109
  • 2015年05月15日 13:32
  • 1264

python3 中的 map,reduce,filter函数

在python2 中直接打印map,filter函数会直接输出结果。但在python3中做了些修改,输出前需要使用list()进行显示转换,而reduce函数则被放到了functools包中,代码如下...
  • frone
  • frone
  • 2015年05月07日 14:53
  • 1905

造轮子之C++中的map,filter,reduce

一直喜欢python的map,filter和reduce函数,在标准C++中分别有std::transform(对应python的map),std::copy_if(对应python的filter),...
  • cracker_zhou
  • cracker_zhou
  • 2017年04月26日 21:41
  • 718
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python函数式编程-----序列处理函数:map(),filter(),reduce()
举报原因:
原因补充:

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