python中的map、reduce、filter用法

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])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值