reduce的用法实例:
#!/usr/bin/env python3
... #-*-coding:utf-8-*-
...
>>> from functools import reduce
>>>
>>> CHAR_TO_INT = {
... '0':0,
... '1':1,
... '2':2,
... '3':3,
... '4':4,
... '5':5,
... '6':6,
... '7':7,
... '8':8,
... '9':9,
... }
>>>
>>> def str2int(s):
... ints = map(lambda ch: CHAR_TO_INT[ch],s)
... return reduce(lambda x,y:x *10 + y,ints)
...
>>> print(str2int('0'))
0
>>> print(str2int('12300'))
12300
>>> print(str2int('0012345'))
12345
CHAR_TO_FLOAT = {
... '0':0,
... '1':1,
... '2':2,
... '3':3,
... '4':4,
... '5':5,
... '6':6,
... '7':7,
... '8':8,
... '9':9,
... '.':-1
... }
>>>
>>>
def str2float(s):
... nums = map(lambda ch: CHAR_TO_FLOAT[ch],s)
... point = 0
... def to_float(f,n):
... nonlocal point
... if n == -1:
... point = 1
... return f
... if point == 0:
... return f * 10 + n
... else:
... point = point * 10
... return f + n / point
... return reduce(to_float,nums,0.0)
...
>>> print(str2float('0'))
0.0
>>> print(str2float('123.456'))
123.456
>>> print(str2float('123.45600'))
123.456
>>> print(str2float('0.1234'))
0.12340000000000001
>>> print(str2float('.1234'))
0.12340000000000001
>>> print(str2float('120.0034'))
120.0034
网友评论