python lambda map reduce_【python深入】map/reduce/lambda 内置函数的使用

python中的内置函数里面,有map和reduce两个方法,这两个方法可以非常好的去做一些事情,但是之前都没有用过,下面是关于这两个方法的介绍:

一、map相关

map()会根据提供的函数对指定的序列做映射

具体用法及含义如下:

2afc58757db9ebecf3b05ccb2e25aa7a.png

因为这是python27中,所以会直接返回一个list,如果是python3,则返回迭代器

具体参数:

(1)function参数:函数,可以包含1个或者多个参数,看sequence的个数(备注:操作的内容其实就是sequence里面的每一个元素)

(2)sequence参数:要操作的序列

下面是map的具体用法:

def char2num(s):

return {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s]

print map(char2num, '12345')

运行结果是:

[1, 2, 3, 4, 5]

接下来是有两个或者更多参数的情况:

def addmap(x,y,z):

return x+y*z

print map(addmap, [1,2,3], [4,5,6], [1,2,3])

运行结果是:

[5, 12, 21]

二、reduce相关

reduce()的作用是:根据提供的函数,对参数序列中的元素进行累积,比如说提供的函数是加和,则会对参数序列中的所有元素进行加和处理

具体用法及含义如下:

c520a392c231da0fb25c27d13e669a1c.png

具体参数:

(1)function参数:包含两个参数,是用来进行累加运算的两个参数

(2)sequence参数:要进行操作的序列

下面是reduce的具体用法:

def fn(x,y):

return x*10 + y

print reduce(fn, [1,2,5,7,9])

print fn(fn(fn(fn(1,2),5),7),9)

运行结果是:

12579

12579

从上面的例子中可以看到:

reduce(fn, [1,2,5,7,9]) 其实等价于  fn(fn(fn(fn(1,2),5),7),9)

然后将map和reduce结合起来用的话,可以实现一个str2int的功能:

def str2int(s):

def fn(x,y):

return x*10 + y

def char2num(s):

return {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s]

return reduce(fn, map(char2num, s))

print str2int('12386')

运行结果是:

12386

后面再有这种map或者reduce的需要,可以自己实现function,然后结合使用即可

三、lambda

lambda就是匿名函数,不需要函数名,就只有一个表达式,不用写return

比如说对两个元素实现相加的操作,这个可以跟reduce结合使用:

#关于lambda的用法

print reduce(lambda x,y:x+y, ['q', 'e', 'w', 't', 'a'])

或者跟map结合使用:

print map(lambda x, y:x*x+y*y, [1,2,3,4,5], [1,2,3,4,5])

然后运行结果分别如下:

qewta

[2, 8, 18, 32, 50]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值