高阶函数map,filter,reduce及lambda表达式

高阶函数及lambda表达式

高阶函数

fiter(),zip(),map(),reduce()

name=['milo','zou','tom']
age=[20,30,40]
tel=['133','159','189']

现在让3个list列表相关联,用zip(name,age,tel),在用zip并行遍历时,3个列表中的元素是一样多的,如果元素个数不同,会按照最短原则配对(木桶短板)截断

zip()
>>> list(zip(age,name,tel))
[(20, 'milo', '133'), (30, 'zou', '159'), (40, 'tom', '189')]
>>> zip(name,age,tel)
[('milo', 20, '133'), ('zou', 30, '159'), ('tom', 40, '189')]

>>> hobby=['football','baskteball']
>>> zip(name,age,tel,hobby)
[('milo', 20, '133', 'football'), ('zou', 30, '159', 'baskteball')]
map()

map()函数还可以将函数func传递为形参,对遍历后的列表进行额外计算操作


>>> a=[1,3,5]
>>> b=[2,4,6]
>>> c=[2,4,6]
>>> def mf(x,y,z):
	return x*y*z

>>> map(mf,a,b,c)
[2, 12, 30]
reduce()

阶乘操作
reduce()可以更简单的实现递归

case1
>>>n=0
>>> for i in range(100):
	n+=i
	print(n)
可以看出这种方式比较笨

case2	利用reduce()函数的特性
>>> def sum(x,y):
	return x+y

>>> reduce(sum,range(10))
45
>>> reduce(sum,range(100))
4950
>>> 

reduce当然还支持lambda 匿名函数
reduce(lambda x,y:x+y,range(100))
>>> reduce(lambda x,y:x+y,range(100))
4950
filter()

filter()函数同样也支持这样用法

>>> filter(lambda x:x%2,range(15))
[1, 3, 5, 7, 9, 11, 13]
>>> 

lambda表达式(匿名函数)

简单用例

foo=[2,18,9,22,17,24,8,13,27]
print filter(lambda x:x%3==0,foo)
print map(lambda x:x*2+10,foo)
print reduce(lambda x,y:x+y,foo)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值