我有一个脚本,读取一个文本文件,拉出小数作为字符串,并将它们放入一个列表。

所以我列出了这个清单:

my_list = ['0.49', '0.54', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54']

如何将列表中的每个值从字符串转换为浮点数?

我试过:

for item in my_list:
    float(item)

但这似乎对我不起作用。


当前回答

Map (float, mylist)可以做到。

(在Python 3中,map停止返回一个列表对象,所以如果你想要一个新的列表,而不仅仅是要迭代的东西,你要么需要list(map(float, mylist) -要么使用SilentGhost的答案,这可以说是更Python化的。)

其他回答

Map (float, mylist)可以做到。

(在Python 3中,map停止返回一个列表对象,所以如果你想要一个新的列表,而不仅仅是要迭代的东西,你要么需要list(map(float, mylist) -要么使用SilentGhost的答案,这可以说是更Python化的。)

这将是另一个方法(不使用任何循环!):

import numpy as np
list(np.float_(list_name))

你可以使用numpy来避免循环:

import numpy as np
list(np.array(my_list).astype(float)

Float (item)做正确的事情:它将其参数转换为Float并返回它,但它不会在原地改变参数。一个简单的修复代码是:

new_list = []
for item in list:
    new_list.append(float(item))

同样的代码可以使用列表推导式写得更短:new_list = [float(i) for i in list]

就地更改列表:

for index, item in enumerate(list):
    list[index] = float(item)

顺便说一句,避免使用列表作为变量,因为它伪装了内置函数的同名。

你甚至可以通过numpy来做到这一点

import numpy as np
np.array(your_list,dtype=float)

这个返回你的列表的np数组为float

你也可以将'dtype'设置为int