您的位置:首页 > 编程语言 > Python开发

python中的map、reduce、filter用法

2015-01-23 11:11 423 查看
map函数

map函数的定义:map(function, sequence[, sequence, ...]) -> list
通过定义可以看到,这个函数的第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。
function可以理解为是一个一对一或多对一函数,map的作用是以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的list。

代码示例:

>>> def add(x):

return x+10

>>> hh=[0,1,2]

>>> map(add, hh)

[10, 11, 12]

>>> def abc(a,b,c):

return a*100+b*10+c

>>> list1 = [1,2,3]

>>> list2 = [4,5,6]

>>> list3 = [7,8,9]

>>> map(abc,list1,list2,list3)

[147, 258, 369]

如果传入的函数是None时

>>> map(None,list1,list2,list3)

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

reduce函数

reduce函数会对参数序列中元素进行累积。
reduce函数的定义:reduce(function, sequence[, initial]) -> value
function参数是一个有两个参数的函数。reduce依次从sequence中取一个元素,和上一次调用function的结果作为参数,再次调用function。
第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial作为参数调用function,否则会以序列sequence中的前两个元素做参数调用function。
代码示例:
>>> reduce(lambda x, y: x + y, [2, 3, 4, 5], 1)

15 ((((1+2)+3)+4)+5)
>>> reduce(lambda x, y: x + y, [2, 3, 4, 5])

14

filter函数

filter函数会对指定序列执行过滤操作。
filter函数的定义:filter(function or None, sequence) -> list, tuple, or string
function是一个谓词函数,接受一个参数,返回布尔值True或False。
filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果是调用后为True的元素。
返回值的类型和参数sequence的类型相同

>>> def is_even(x):

return x%2==0

>>> filter(is_even, [1, 2, 3, 4, 5, 6])

[2, 4, 6]

>>> filter(is_even, (1, 2, 3, 4, 5, 6))

(2, 4, 6)

简化写法,可以写成filter(lambda x : x%2 == 0, [1, 2, 3, 4, 5, 6])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: