lambda&filter&map&reduce函数的基本使用

'''
Created on 2019-03-14
Author:Binzhou
Project:python中lambda filter map reduce函数使用总结
'''

#lambda匿名函数,格式lambda x,y:x+y 表示一个函数的参数是x,y,函数实现功能是x+y

#filter[function,sequence]用于过滤序列 返回迭代器对象(包含所有满足使function返回值为True的sequence值)
#python2直接返回与sequence一致的数据类型(列表,元组)

print(filter(lambda x:x*x-4,range(10)))#用于过滤序列 返回迭代器对象<filter object at 0x000000000113C940>
print(list((filter(lambda x:x*x-4,range(10)))))#使用list将迭代器对象转换成list,结果为TRUE的入参
print(list((filter(lambda x:x*x,range(10))))) #序列0传入使结果为False,返回结果无0

#map[function,sequence1,...]将函数调用映射到每个序列的对应元素上,入参序列为列表,返回迭代器对象
print(map(lambda x,y:x*y-4,range(3),[8,9,10]))#将函数调用映射到每个序列的对应元素上,返回迭代器对象<map object at 0x00000000011B5DA0>
print(list(map(lambda x,y:x*y-4,range(3),[8,9,10])))#使用list将迭代器对象转换成list


#reduce[function,sequence,inital=None]:先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给fuction,最终返回一个结果值(似累加)
# 在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引
# from functools import reduce
from functools import reduce

print(reduce(lambda x,y:x+y,range(10)))#返回0-9的累加结果
# 第一次调用function时,如果提供initial参数,会以sequence中的第一个元素和initial作为参数调用function,否则会以序列sequence中的前两个元素做参数调用function。
# reduce(lambda x, y: x + y, [2, 3, 4, 5, 6], 1)
# 结果为21(  (((((1+2)+3)+4)+5)+6)  )
# reduce(lambda x, y: x + y, [2, 3, 4, 5, 6])
# 结果为20

转载于:https://www.cnblogs.com/BinZhou0901/p/10530154.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值