繁体   English   中英

将字符串转换为嵌套列表中的浮点数

[英]Converting strings to floats in a nested list

我有一个包含数字和单词字符串的列表列表,我只想将数字字符串转换为浮点数

aList= [ ["hi", "1.33"], ["bye", " 1.555"] ] 

首先,您需要一个函数来执行“如果可能,将字符串转换为浮点数,否则将其保留为字符串”:

def floatify(s):
    try:
        return float(s)
    except ValueError:
        return s

现在,您可以在每个值上调用它,生成一个新列表,或就地修改旧列表。

由于您具有嵌套列表,因此这意味着嵌套迭代。 您可能要分两步明确开始:

def floatify_list(lst):
    return [floatify(s) for s in lst]

def floatify_list_of_lists(nested_list):
    return [floatify_list(lst) for lst in nested_list]

当然,只需将floatify_list本地函数,就可以将其组合为一个函数:

def floatify_list_of_lists(nested_list):
    def floatify_list(lst):
        return [floatify(s) for s in lst]
    return [floatify_list(lst) for lst in nested_list]

您也可以通过替换内部表达式代替函数调用来实现。 如果您不知道自己该怎么做,我建议您不要这样做,因为您不太可能理解它(复杂的嵌套列表理解很难让专家理解),但是如果您必须:

def floatify_list_of_lists(nested_list):
    return [[floatify(s) for s in lst] for lst in nested_list]

或者,如果您希望Python看起来像伪装成的Haskell:

def floatify_list_of_lists(nested_list):
    return map(partial(map, floatify), nested_list)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM