Discuss / Python / map/reduce练习

map/reduce练习

Topic source
练习1

from functools import reduce
def normalize(name):
    name=name.capitalize()#首字母大写
    return name
L1=['adam','LISA','barT']
L2=list(map(normalize,L1))
print(L2)




练习2

def prod(L):#prod函数接受一个list,并用reduce()求积
    return reduce(lambda x,y:x*y,L)    
print('3*5*7*9=',prod([3,5,7,9]))



练习3


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]
def str2int(s):
    return reduce(fn,map(char2num,s))
def str2float(s):
    s1,s2=s.split('.')
    x=s1+s2
    return reduce(fn,map(char2num,x))/(10**len(s2))
print(str2float('123.456'))

周翔lw

#2 Created at ... [Delete] [Delete and Lock User]

自己写了一个,但是看了你的代码,感觉你的行数虽然多一点,但看起来简介多了,学习了

成简宁

#3 Created at ... [Delete] [Delete and Lock User]

在最后一个str2float中,之前已经定义过str2int了,就可以直接调用了,所以str2float中最后的return可以直接用: return str2int(x)/ (10 ** len(s2)) 这段代码写得很简洁而且逻辑也很好


  • 1

Reply