我有一个脚本,读取一个文本文件,拉出小数作为字符串,并将它们放入一个列表。
所以我列出了这个清单:
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)
但这似乎对我不起作用。
当前回答
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)
顺便说一句,避免使用列表作为变量,因为它伪装了内置函数的同名。
其他回答
这将是另一个方法(不使用任何循环!):
import numpy as np
list(np.float_(list_name))
可以使用numpy将列表直接转换为浮动数组或矩阵。
import numpy as np
list_ex = [1, 0] # This a list
list_int = np.array(list_ex) # This is a numpy integer array
如果要将整数数组转换为浮动数组,则添加0。它
list_float = np.array(list_ex) + 0. # This is a numpy floating array
换做是我就会这么做。
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'>
你可以使用numpy来避免循环:
import numpy as np
list(np.array(my_list).astype(float)
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'>