逗号分隔的字符串转换为浮点数列表

4

在Python中,我当前有一个如下所示的一个元素的列表:

x= ['1.1,1.2,1.6,1.7']

每个值仅由逗号分隔。我想将其转换为浮点数列表,例如

x=[1.1, 1.2, 1.6, 1.7]

我已经尝试了x = [float(i) for i in x]x = [float(i) for i in x.split()],但两者都返回错误。


1
尝试使用 x[0].split(',') - martianwars
x is a list, so you would need to access it via x[0]. Also you should provide the delimiter to the split call, e.g.: x[0].split(',') - UnholySheep
5个回答

6

x 是一个只有一个字符串的列表,所以要访问该字符串,需要使用 x[0]。该字符串以逗号分隔,因此需要指定分隔符:split(',') 。(否则,split() 会尝试按空格拆分字符串,如文档中所述。)

因此,最终结果如下:

[float(i) for i in x[0].split(',')]

2
您可以这样使用map()函数:
list(map(float, x[0].split(',')))

map() 函数接受一个函数(在本例中为 float)和一个可迭代对象(在本例中为列表:x[0].split(',') )。对于我们的列表 x[0].split(',') 中的每个元素都会调用 float 函数。

这等效于以下列表推导式

[float(item) for item in x[0].split(',')]

在Python3+中,map不会返回一个列表,而是返回一个映射对象,你需要将其转换为列表。 - Iron Fist
@IronFist 这个问题中没有标记Python 3! - ettanany
Python2已经不再使用,因此您必须概括您的答案,并且您在回答中提到了Python3(链接到Python3文档)。 - Iron Fist

0

按逗号分隔字符串,并从每个项目构建一个 float:

[ float(item) for item in '1.1,2.3,5.1'.split(',') ]

OP有不同的输入。 - martianwars

0
确保在字符串上应用你的split()函数,而不是单个元素列表。使用x[0]确保这一点。此外,将分隔符,传递给split()函数。
x = [float(i) for i in x[0].split(',')]

0

x=[float(i) for i in x.split(',')] 几乎正确,但有两个问题。首先,您没有向split()函数传递任何内容,因此它不会在字符串中拆分任何内容(它只会在空格上拆分,而您的字符串没有空格)。您想要按逗号拆分,因此必须将逗号传递给它,例如x.split(',')

其次,由于xx= ['1.1,1.2,1.6,1.7']定义,这是一个包含单个字符串的列表,您必须使用x[0]引用数组中的字符串。最终代码如下:

x = ['1.1,1.2,1.6,1.7']
floats = [float(i) for i in x[0].split(',')]
print(floats)

这将输出一个浮点数列表:[1.1, 1.2, 1.6, 1.7]

如果x只是一个字符串,比如x = '1.1,1.2,1.6,1.7',那么你可以简单地使用floats = [float(i) for i in x.split(',')]


1
这些是列表,而不是数组:https://docs.python.org/2/library/array.html - UnholySheep
@UnholySheep 谢谢,我已经更正了术语。 - Random Davis
请注意,“not going to split on anything”不正确,请参阅文档 - 没有分隔符意味着它会在空格上进行拆分。 - user812786
@whrrgarbl 谢谢,我会进行修改。 - Random Davis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接