pyhton中的map/reduce应用

在自学Python过程中,发现map和reduce函数非常实用。map函数将数据拆分并逐个应用给定函数,reduce则通过合并操作整合结果。例如,使用它们实现列表元素平方和字符转int的功能。
摘要由CSDN通过智能技术生成

最近在自学python,写点心得。

参考:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00141861202544241651579c69d4399a9aa135afef28c44000

python中有两个函数比较强大,就是map和reduce。这里面的思想同hadoop中的类似,map是将数据拆散成一个个片段,然后分别在某个函数中执行,而reduce则是二合一二合一式的将分散的数据利用函数规则进行合并。

比如,有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,则可以利用循环写为:

def fn(x):
    return x*x
L=[]
for s in [1,2,3,4,5,6,7,8,9]:
    L.append(fn(s))
print L

但利用map函数就可以简写为:

def fn(x):
    return x*x
print map(fn,[1,2,3,4,5,6,7,8,9])

实现输入名字转为大小写形式,则函数为:

def name(l):
    def chan(s):
        return s[0].upper()+s[1:].lower()
    return map(chan,l)
print name(['adam', 'LISA', 'barT'])

而实现输入list求积则为:

def prod (l):
    def com(x,y):
        return x*y
    return reduce(com,l)
print prod ([1,2,3,4,5,6,7,8,9])

使用时注意拆分和合并的思想

这是一个即拆分又合并的例子,即实现字符转int功能:

def strint(s):
    def com(x,y):
        return 10*x+y
    def change(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(com,map(change,s))
print strint('163902')



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值