将嵌套列表中的数据从字符串更改为float

时间:2017-11-06 01:12:48

标签: python python-2.7

我很难将2D列表中的数据从字符串更改为浮点数。我一直在尝试使用嵌套的用于循环,但似乎没有任何效果。任何帮助将不胜感激。谢谢。

我的数据采用这种格式。

[['3.52', '0.95', '2.0', '1.52'],
['3.41', '0.95', '2.0', '1.6'],......]

我目前的方法就是这样。

for item in data: 
    for n in item:
         n=float(n)

我正在使用python 2.7

4 个答案:

答案 0 :(得分:1)

您有正确的想法,但实际上并没有使用当前代码更新数组中的值。有很多方法可以做到这一点 - 最简单,只需查找每个元素的索引,然后使用float()进行转换。

for i in range(len(data)):
    for j in range(len(data[i])):
        data[i][j] = float(data[i][j])

答案 1 :(得分:1)

在内部for循环中使用enumerate()来检索索引(比如i),然后使用item[i] = float(n)

答案 2 :(得分:1)

尝试使用map函数(在Python 2中):

data = [['3.52', '0.95', '2.0', '1.52'],['3.41', '0.95', '2.0', '1.6']]
result = [map(float, item) for item in data]
print(result)

在Python 3中:

data = [['3.52', '0.95', '2.0', '1.52'],['3.41', '0.95', '2.0', '1.6']]
result = [list(map(float, item)) for item in data]
print(result)

结果将是:

[[3.52, 0.95, 2.0, 1.52], [3.41, 0.95, 2.0, 1.6]]

答案 3 :(得分:1)

您可以使用地图将循环转换为列表理解:

data_flts

map是具有浮点数的所需子列表。 floatdata函数应用于原始列表中的子列表i的每个元素,此处称为list(map(...))。在Python 3.X上,您需要使用mapNSTextAttachment输出转换为列表。

您原始程序的问题在于您没有以任何方式保存您的号码,只是在内循环的每次迭代中都覆盖了它。简单修复包括将数字附加到列表中。