coding:utf-8
利用map()和reduce()函数,实现类似于int()的功能。
* ‘123’ –>123*
两个步骤:
1>先将’123’字符串中的每一个字符’1’,’2’,’3’分别转化成一个数字;适合使用map()函数。
2>再将每一个数字,1,2,3进行处理,最终得到整数123;适合使用reduce()函数。
def char_to_number(string):
all_number_dict = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}
# 以变量string为键,从all_number_dict中取出对应的值,即取出了整数类型的数字。
return all_number_dict[string]
res = map(char_to_number, '555')
# print res
def result_number(x,y):
res = x*10 + y
return res
result = reduce(result_number, res) #res = [1,2,3]
print '最终结果:',result,type(result)
再次对上面的逻辑进行封装,像使用Int()函数简单方便。
def INT(s):
def char_to_number(string):
all_number_dict = {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}
return all_number_dict[string]
def result_number(x,y):
return x*10 + y
return reduce(result_number, map(char_to_number, s))
res = INT('123')
print '升级版:',res
res = INT('2222')
print '升级版:',res