“TypeError:float参数必须是字符串或数字,而不是列表。”将字符串列表转换为浮点列表

时间:2014-11-28 22:31:59

标签: python python-3.x

我正在尝试将字符串列表转换为浮点列表。我已经尝试了列表理解,映射,并简单地在for循环中写出来。我真的不想使用映射,因为即使使用list(map)我似乎也无法将其恢复到正确的列表中。

到目前为止,我的尝试都没有奏效,因为我无法找到Python 3x的正确语法。我的最新尝试似乎显示出了希望,但我不断收到以下错误。

Traceback (most recent call last):
File "G:/test.py", line 56, in <module>
heartdis_flt.append(float(item))
TypeError: float() argument must be a string or a number, not 'list'

这是我正在使用的代码:

heartdis = heartdis[5:]

heartdis_flt = []

for item in heartdis:

    heartdis_flt.append(float(item))

print(heartdis_flt)

heartdis是从CSV文件创建的字符串列表。

有人可以解释我的逻辑中的正确语法或可能是一些缺陷吗?

2 个答案:

答案 0 :(得分:2)

我发现了一些可行的东西。我使用itertools将列表列表更改为一个列表,然后将其全部转换为浮点数。

    heartdis = heartdis[5:]
    heartdis_flt = []
    heartdis2 = list(itertools.chain.from_iterable(heartdis))
    for item in heartdis2:
        heartdis_flt.append(float(item))
    print(heartdis_flt)

答案 1 :(得分:0)

就像@utdemir所评论的那样,代码的问题在于您将列表视为字符串。你确实可以使用itertools.chain,但也许你想要改变你从heartdis开始阅读的方式。我不知道你是如何阅读你的CSV文件的,但是如果你使用的是csv模块,我估计你不应该将列表列表作为输出。无论如何,你应该检查我的意见。