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

所以我列出了这个清单:

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)

但这似乎对我不起作用。


当前回答

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

其他回答

for i in range(len(list)): list[i]=float(list[i])
[float(i) for i in lst]

准确地说,它创建了一个带有浮点值的新列表。与映射方法不同,它将在py3k中工作。

import numpy as np
my_list = ['0.49', '0.54', '0.54', '0.54', '0.54', '0.54', '0.55', '0.54', '0.54', '0.54', '0.55', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54', 
'0.55', '0.55', '0.54']
print(type(my_list), type(my_list[0]))   
# <class 'list'> <class 'str'>

它将类型显示为字符串列表。你可以使用numpy将这个列表同时转换为一个浮点数数组:

    my_list = np.array(my_list).astype(np.float)

    print(type(my_list), type(my_list[0]))  
    # <class 'numpy.ndarray'> <class 'numpy.float64'>

我已经解决了这个问题在我的程序使用:

number_input = float("{:.1f}".format(float(input())))
list.append(number_input)

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

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