在Python中,如何将列表中的所有项目转换为浮点数?

我有一个脚本,它读取一个文本文件,将十进制数字作为string取出并放入列表中。

所以我有这个清单: ['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']

如何将列表中的每个值从一个string转换为一个float?

我努力了:

 for item in list: float(item) 

但是这似乎不适合我。

 [float(i) for i in lst] 

准确地说,它会创build一个带有浮点值的新列表。 不像map方法,它将在py3k中工作。

map(float, mylist)应该这样做。

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

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) 

顺便说一句,避免使用list为您的variables,因为它伪装内置函数具有相同的名称。

您可以使用numpy将列表直接转换为浮动数组或matrix。

  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