令狐林的极客专栏

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

参考:

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

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

def fn(x):return x*xL=[]for s in [1,2,3,4,5,6,7,8,9]:L.append(fn(s))print L但利用map函数就可以简写为:

def fn(x):return x*xprint 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*yreturn 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+ydef 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')

数最亮的星。如果有可能,我带你去远行。

令狐林的极客专栏

相关文章:

你感兴趣的文章:

标签云: