Discuss / Python / 字符串转实数,对没小数点的情况加了个奇诡的健壮性

字符串转实数,对没小数点的情况加了个奇诡的健壮性

Topic source
def str2float(s):
    ss = s.split('.') + ['']
    DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4,
              '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
    def dig(s): return DIGITS[s]
    s0 = map(dig, ss[0] + ss[1])
    def inte(x, y): return x * 10 + y
    f1 = reduce(inte, s0)
    def flot(x, y): return x * 0.1
    f2 = reduce(flot, [f1]+list(ss[1]))
    return f2

对,就是那个 +['']

因为如果字符串没小数点的话,ss[1]可能没定义

附:reduce真就完全不处理 Iterable 的首项了嗷,那么函数再把后元空置,这真就是原地tp


  • 1

Reply