美文网首页
2018-08-12

2018-08-12

作者: 淡水t海边 | 来源:发表于2018-08-12 22:51 被阅读0次


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

相关文章

网友评论

      本文标题:2018-08-12

      本文链接:https://www.haomeiwen.com/subject/kdmebftx.html