zoukankan      html  css  js  c++  java
  • 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:

     1 #!/usr/bin/env python3
     2 # -*- coding: utf-8 -*-
     3 
     4 from functools import reduce
     5 
     6 CHAR_TO_INT = {
     7     '0': 0,
     8     '1': 1,
     9     '2': 2,
    10     '3': 3,
    11     '4': 4,
    12     '5': 5,
    13     '6': 6,
    14     '7': 7,
    15     '8': 8,
    16     '9': 9
    17 }
    18 
    19 def str2int(s):
    20     ints = map(lambda ch: CHAR_TO_INT[ch], s)
    21     return reduce(lambda x, y: x * 10 + y, ints)
    22 
    23 print(str2int('0'))
    24 print(str2int('12300'))
    25 print(str2int('0012345'))
    26 
    27 CHAR_TO_FLOAT = {
    28     '0': 0,
    29     '1': 1,
    30     '2': 2,
    31     '3': 3,
    32     '4': 4,
    33     '5': 5,
    34     '6': 6,
    35     '7': 7,
    36     '8': 8,
    37     '9': 9,
    38     '.': -1
    39 }
    40 
    41 def str2float(s):
    42     nums = map(lambda ch: CHAR_TO_FLOAT[ch], s)
    43     point = 0
    44     def to_float(f, n):
    45         nonlocal point
    46         if n == -1:
    47             point = 1
    48             return f
    49         if point == 0:
    50             return f * 10 + n
    51         else:
    52             point = point * 10
    53             return f + n / point
    54     return reduce(to_float, nums, 0.0)
    55 
    56 print(str2float('0'))
    57 print(str2float('123.456'))
    58 print(str2float('123.45600'))
    59 print(str2float('0.1234'))
    60 print(str2float('.1234'))
    61 print(str2float('120.0034'))
  • 相关阅读:
    LeetCode 70
    LeetCode 81
    LeetCode 33
    LeetCode 78
    LeetCode 50
    LeetCode 34
    关于机器学习的学习笔记
    图的 DFS 与 BFS 复杂度分析
    Sqlalchemy的学习使用和常见问题
    mysql的使用和远程连接
  • 原文地址:https://www.cnblogs.com/AlwaysWIN/p/6278323.html
Copyright © 2011-2022 走看看