【问题标题】:How do I convert a list of strings in a list composed of ints and floats to both ints and floats?如何将由整数和浮点数组成的列表中的字符串列表转换为整数和浮点数?
【发布时间】:2021-12-22 12:59:15
【问题描述】:

例如,我有列表 ['-1','9','7.8'] 如何将列表转换为 [-1,9,7.8] 而无需在将全部转换为浮点数或全部转换为整数之间进行选择?

【问题讨论】:

标签: python string list type-conversion integer


【解决方案1】:

这里有两个简单的解决方案

# 1 Just convert to float.
print([float(i) for i in ['-1','9','7.8']])


# 2 Check if are dotted
convert = [float(i) if '.' in i else int(i) for i in ['-1','9','7.8']]
print(convert)

第一个会起作用,因为整数总是可以转换为浮点数。 但如果你真的需要区分 2,那么只需检查是否被点缀。

**解决方案 3 **

"Ask forgiveness not permission" 尝试将其转换为 int,如果失败则转换为 float

def int_float_converter(data):

    converted_data = []
    for d in data:
        val = None
        try:
            val = int(d)
        except ValueError:
            val = float(d)
        finally:
            if val:
                converted_data.append(val)
    return converted_data

converted = int_float_converter(['-1','9','7.8'])
print(converted)
# [-1, 9, 7.8]

【讨论】:

    【解决方案2】:

    您可以使用列表推导和三元运算符来做到这一点

    lst =['-1','9','7.8']
    lst = [float(numStr) if '.' in numStr else int(numStr) for numStr in lst ]
    

    【讨论】:

      【解决方案3】:
      int(x) if int(x) == float(x) else float(x)
      

      是判断字符串是整数还是浮点数的有用方法

      【讨论】:

      • 小心,传递类似 int('7.8') 的东西会失败 -> ValueError: invalid literal for int() with base 10:
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 2013-08-11
      • 2012-05-04
      • 1970-01-01
      • 2021-09-24
      相关资源
      最近更新 更多