str轉int:
1 def fn(x,y): 2 return x*10+y 3 4 def char2num(s): 5 return {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s] # 特別注意這里,后面還有個 [s] 6 7 print(type(reduce(fn, map(char2num, '1738785')))) 8 print(reduce(fn, map(char2num, '1738785')))
輸出如下:
1 <type 'int'> 2 1738785
整理成一個 str2int 函數就是如下嘍:
1 from functools import reduce 2 3 def str2int(s): 4 def fn(x,y): 5 return x*10+y 6 def char2num(s): 7 return {'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s] 8 return reduce(fn,map(char2num,s)) 9 10 print(str2int('365779')) 11 print(type(str2int('365779')))
用匿名函數lambda再簡化一下就成了下面這個樣子:
1 def str2int(s): 2 return reduce(lambda x,y:x*10+y, map(lambda s:{'0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9}[s], s))
WOC,就一行代碼哦,夠簡單!