我有一个脚本,读取一个文本文件,拉出小数作为字符串,并将它们放入一个列表。
所以我列出了这个清单:
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)
但这似乎对我不起作用。
我有一个脚本,读取一个文本文件,拉出小数作为字符串,并将它们放入一个列表。
所以我列出了这个清单:
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)
但这似乎对我不起作用。
当前回答
换做是我就会这么做。
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[0]) # prints <type 'str'>
my_list = [float(i) for i in my_list]
print type(my_list[0]) # prints <type 'float'>
其他回答
你可以使用map()函数将列表直接转换为浮点数:
float_list = map(float, list)
我已经解决了这个问题在我的程序使用:
number_input = float("{:.1f}".format(float(input())))
list.append(number_input)
newlist = list(map(float, mylist))
Map (float, mylist)可以做到。
(在Python 3中,map停止返回一个列表对象,所以如果你想要一个新的列表,而不仅仅是要迭代的东西,你要么需要list(map(float, mylist) -要么使用SilentGhost的答案,这可以说是更Python化的。)
你可以使用numpy来避免循环:
import numpy as np
list(np.array(my_list).astype(float)