在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