将大量的字符串列表转换为浮点数

时间:2018-07-18 00:17:13

标签: python-3.x list type-conversion

我发现in this question如何将字符串列表转换为浮点数:

list_of_floats = list(map(lambda x: float(x.replace(",", "")), list_of_string_floats))

我实际上有12个要转换的列表:

U_mag = list(map(lambda x: float(x.replace(",", "")), U_mag))
B_mag = list(.........................................B_mag))

某些列表包含'-999.000'之类的项目,我想将其转换为浮点数,而其他列表包含'act''QSO'之类的项目,它们将保留为字符串。当然,我可以写12行以上的代码!

我尝试过

for item in (U_mag, B_mag, V_mag, R_mag, K_mag, W1_mag,
          W2_mag, W3_mag, W4_mag, L_UV, Q, flag_uv):
    try:
        item = list(map(lambda x: float(x.replace(",", "")), item))
    except:
        pass

这不会引发任何错误,但不会按预期更改列表。当然,有比将相同代码编写12次更好的方法。

我要去哪里错了?

1 个答案:

答案 0 :(得分:2)

通过为列表分配一个新列表,您将失去对要替换的原始列表的引用。

所以代替:

item = list(map(lambda x: float(x.replace(",", "")), item))

您应该将新列表分配给一个临时变量,如果它没有引发异常,请清除原始列表并使用该临时列表进行扩展,以免丢失原始引用:

temp = list(map(lambda x: float(x.replace(",", "")), item))
item.clear()
item.extend(temp)